MySQL:为什么这些查询会返回不同的结果?

Chr*_*ris 0 mysql sql database select

查询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
Run Code Online (Sandbox Code Playgroud)

查询2:

SELECT * 
FROM user_d1 
WHERE birthdate BETWEEN '1989-08-04' AND '1991-08-04' 
ORDER BY timestamp_lastonline DESC 
LIMIT 20
Run Code Online (Sandbox Code Playgroud)

而我真的不明白:为什么查询2会返回错误的结果?它返回一个首先排序的列表birthdate,然后是timestamp_lastonline......

gio*_*shc 9

查询1:如果日期之间至少存在一条记录,则检索整个塔宾.

查询2:仅检索日期之间的记录.

请阅读此处了解如何EXISTS运作.