查询1:
SELECT *
FROM user_d1
WHERE EXISTS (SELECT 1
FROM `user_d1`
WHERE birthdate BETWEEN '1989-08-04' AND '1991-08-04')
ORDER BY timestamp_lastonline DESC
LIMIT 20
查询2:
SELECT *
FROM user_d1
WHERE birthdate BETWEEN '1989-08-04' AND '1991-08-04'
ORDER BY timestamp_lastonline DESC
LIMIT 20
我真的不明白:为什么查询2 会返回错误的结果?它首先返回按birthdate
排序,然后按timestamp_lastonline
...
答案 0 :(得分:9)
答案 1 :(得分:1)
您的第二个查询使用BETWEEN返回第一个条目'1989-08-04'
与下一条'1991-08-04'
之间的每个条目,然后按timestamp_lastonline DESC
对这些条目进行排序。请注意,这实际上是使用这两个值返回两个条目之间的条目,而不是每个具有1989年到1991年之间的年份的条目(除非您手动命令这些条目按时间顺序编号!)。我很有兴趣看到你认为你的第一个查询返回的内容,因为如果有一行BETWEEN子句返回,它将获得timestamp_lastonline
所排序的表中的每个条目。