我想过滤用户表中每个性别最高的人,这是工作正常的代码:
SELECT s1.name, s1.sex, s1.height
FROM user s1
LEFT JOIN user s2 ON s1.sex =s2.sex AND s1.height < s2.height
WHERE s2.name IS NULL;
但是这个不行:
SELECT s1.name, s1.sex, s1.height
FROM user s1
LEFT JOIN user s2 ON s1.sex =s2.sex AND s1.height < s2.height AND s2.name IS NULL;
这是否意味着'is null'只能在'where'子句之后使用?
最佳答案
第一个版本排除了在 user
表中没有匹配行的记录——当您加入时,这些记录将具有 null
值。
第二个版本过滤 name
列中值为 null
的记录。
关于MYSQL 在 'is null'后使用 'on',在 'where'语句中使用 'left join',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15163781/