执行mySQL查询和排列结果的最佳方法

时间:2014-08-07 14:26:47

标签: mysql

我需要能够按特定顺序显示以下查询的结果。例如:在结果的其余部分之前显示精选列表。

WHERE IS `featured-listing` && WHERE IS NOT `featured-listing`

可能会运行2个查询和一个联合权利,这是最有效的解决方案吗?我知道这可以通过一个查询来完成,我只能记住它是如何完成的。任何和所有的帮助表示赞赏。

SELECT `Assigned-Regions`,`Description`,`Category`,`Start-Date` FROM `adds` WHERE `Status` = "Active" ORDER BY `Start-Date` DESC

3 个答案:

答案 0 :(得分:2)

我会使用ORDER BY的case语句。

等等     SELECT ... ORDER BY (CASE WHEN featured-listing THEN 1 ELSE 2) ASC, some-other-field ASC

答案 1 :(得分:1)

听起来您只需要在查询中添加ORDER BY子句。

如果featured-listing列是整数数据类型且包含值1或0(1 =是特色列表,0 =不是特色列表),那么您可以简单地添加以下内容:

 ORDER BY `featured-listing` DESC, `Start-Date` DESC

或者,您可以使用表达式:

ORDER BY IF(`featured-listing`=1,1,0) DESC, `Start-Date` DESC

答案 2 :(得分:0)

你可以做条件排序..不确定feature-listing是什么,但没有看到一些数据,但这是条件排序的逻辑

SELECT `Assigned-Regions`,`Description`,`Category`,`Start-Date` 
FROM `adds` 
WHERE `Status` = "Active" 
ORDER BY 
    CASE WHEN `featured-listing` THEN 1 ELSE 2 END ASC,
    `Start-Date` DESC