我必须记下具有两个值 = 0 的不同字段的行
让我解释一下,所有具有 stock_it=0
和 stock_eu=0
的记录都必须放在结果的底部
我已经使用了这个解决方案,但是,它并不严格正确,因为它甚至放下了两个值都不为 0 的行
$dati = mysql_query("
SELECT *
FROM $tb_article
ORDER BY
FIELD($tb_art.article_status,'n') DESC,
FIELD($tb_art.article_stock_it,'0') ASC,
FIELD($tb_art.article_stock_eu,'0') ASC,
$tb_art.article_rank
");
article_status=n
表示新产品,它们必须保持在顶部!- 将所有有库存 IT 和库存 EU = 0 的文章推到底部(产品不可用)
- 最后,按照分配的排名对其余文章进行排序
最佳答案
您可以在 ORDER BY
中使用 CASE
语句,如下所示:
SELECT *
FROM $tb_article
ORDER BY
CASE WHEN article_status = 'n' THEN 0
WHEN article_stock_it = 0 THEN 100000
WHEN article_stock_eu = 0 THEN 100000
ELSE article_rank
END
关于mysql - 根据多列对结果行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36085087/