【发布时间】:2012-06-18 08:15:07
【问题描述】:
查询 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
而我真正不明白的是:为什么 Query 2 返回错误的结果?它返回一个列表,首先按birthdate 排序,然后按timestamp_lastonline...
【问题讨论】:
-
哦,可惜Tim删了他的答案,很有帮助(从内部和外部查询连接PK):
SELECT * FROM user_d1 uo WHERE EXISTS (SELECT 1 FROM user_d1 ui WHERE ui.birthdate BETWEEN '1989-08-04' AND '1991-08-04' AND ui.id=uo.id) ORDER BY uo.timestamp_lastonline DESC LIMIT 20