SQL 左连接异常
SQL Left Join Oddity
考虑下表
sessions users
======== =====
id uid sid id name
---------- -------
7 1 192.168.0.10 1 AAA
8 2 NULL 2 BBB
12 2 192.168.0.13 3 CCC
15 20 NULL
为什么是
SELECT u.name FROM `users` u
LEFT JOIN sessions s
ON u.id=s.uid
WHERE s.sid IS NULL
回归
BBB
CCC
为什么这个重调CCC
第二个uid无效。我期待 NULL。
请注意,我不想修复查询,只是想了解结果。
你不需要 LEFT JOIN
,因为你不关心不匹配:
SELECT u.name
FROM `users` u JOIN
sessions s
ON u.id = s.uid
WHERE s.sid IS NULL;
查询要查询的是没有会话或会话未分配 s.sid 值的任何用户。
考虑下表
sessions users
======== =====
id uid sid id name
---------- -------
7 1 192.168.0.10 1 AAA
8 2 NULL 2 BBB
12 2 192.168.0.13 3 CCC
15 20 NULL
为什么是
SELECT u.name FROM `users` u
LEFT JOIN sessions s
ON u.id=s.uid
WHERE s.sid IS NULL
回归
BBB
CCC
为什么这个重调CCC
第二个uid无效。我期待 NULL。
请注意,我不想修复查询,只是想了解结果。
你不需要 LEFT JOIN
,因为你不关心不匹配:
SELECT u.name
FROM `users` u JOIN
sessions s
ON u.id = s.uid
WHERE s.sid IS NULL;
查询要查询的是没有会话或会话未分配 s.sid 值的任何用户。