我在名为saleprice
和regularprice
的表中有两列。该表包含基于拍卖的站点的列表记录。如果用户决定可以放入比saleprice
低的regularprice
,或者可以简单地放入regularprice
并将saleprice
留空。
我建立了一个select
,允许用户根据价格从低到高或从高到低查看记录。问题是如果存在regularprice
,则saleprice
字段将为空。如果存在saleprice
,则regularprice
和saleprice
字段都将包含一个值,并且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/