SORT BY 2个字段,如果一个不是空的,那么在mysql中的其他字段排序

时间:2016-12-21 20:10:40

标签: mysql

我在一个名为salepriceregularprice的表格中有两列。此表包含基于拍卖的网站列表的记录。如果用户决定他们可以放入低于saleprice的{​​{1}}或者他们可以简单地放入regularprice并将regularprice留空。

我构建了一个saleprice,允许用户根据价格查看从低到高或从高到低的记录。问题是,如果有select,那么regularprice字段将为空。如果有saleprice,那么salepriceregularprice字段都会包含值,当然saleprice会更低。

我正在尝试根据用户选择的内容返回记录但我无法获取我的声明以正确地搜索两列的记录。

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

以下是我到目前为止的例子

从低到高

regularprice

从高到低

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

1 个答案:

答案 0 :(得分:2)

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

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