MYSQL两个表排序TRICKY

时间:2018-02-25 09:52:15

标签: mysql

早上好,我有疑问,如果有人知道......这是一个棘手的问题......我有两个专栏

date        active
20180211    0
20180100    0
20171208    1

我需要先按active 1 + date排序,然后按active 0 + date ....

排序

预期结果:

date        active
20171208    1
20180211    0
20180100    0

无问题的工作解决方案

SELECT * FROM xy ORDER BY active DESC, date DESC 

现在我需要实现子句 WHERE ,因为会有xy结果,这里有问题。

SELECT * FROM xy WHERE date < 20171208 ORDER BY active DESC, date DESC LIMIT 1

这不起作用,仍然在没有ORDER和&#34; 20171208&#34;是mysql的最后一个结果(订单未应用)......也许需要组或其他东西

非常感谢您的回答。最好的问候P.

1 个答案:

答案 0 :(得分:0)

很明显,你没有20171208之前的日期,所以结果是一个空集。

order by子句仅适用于结果,这意味着查询将首先执行where子句,然后对筛选结果进行排序。您不能期望先执行订单,然后再查询查询的where部分。

请找到我创建的sqlFiddle,看看它放在&lt; =而不是&lt;在查询条件

http://sqlfiddle.com/#!9/7609ba/18