我在名为salepriceregularprice的表中有两列。该表包含基于拍卖的站点的列表记录。如果用户决定可以放入比saleprice低的regularprice,或者可以简单地放入regularprice并将saleprice留空。

我建立了一个select,允许用户根据价格从低到高或从高到低查看记录。问题是如果存在regularprice,则saleprice字段将为空。如果存在saleprice,则regularpricesaleprice字段都将包含一个值,并且saleprice当然会更低。

我试图根据用户选择的内容返回记录,但是我无法获得要正确搜索两列的语句来返回记录。

基本上,如果saleprice不为空,则需要按regularprice进行排序,否则只需使用regularprice

这是到目前为止我提出的例子

从低到高

SELECT * FROM market_posts
WHERE live = 1 AND category = '1'
ORDER BY IF(saleprice != '',saleprice,regularprice) ASC


高到低

SELECT * FROM market_posts
WHERE live = 1 AND category = '1'
ORDER BY IF(saleprice != '',saleprice,regularprice) DESC

最佳答案

如果未设置saleprice时为NULL,请使用COALESCE

SELECT *
FROM market_posts
WHERE live = 1 AND category = '1'
ORDER BY COALESCE(saleprice, regularprice) ASC -- OR DESC

关于mysql - SORT BY 2字段,如果其中一个不为空,则按其他字段排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41271123/

10-15 02:22