MYSQL 在 'is null'后使用 'on',在 'where'语句中使用 'left join'

标签 mysql sql null left-join

我想过滤用户表中每个性别最高的人,这是工作正常的代码:

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/

相关文章:

PHP mySQL - 替换字符串中的一些字符串

mysql - MySQL中自增标识字段增加多行

mysql - 将 IFNULL 与 TRUNCATE 结合使用时出现意外结果

sql - 在 IBM netezza SQL 表中查找多列的不同组合时出错

c - 符合 ANSI C 标准的平台,其中全零位不是空指针表示

php - 未定义的属性: Illuminate\Database\Eloquent\Collection::Laravel 5.2

PHP检查用户是否查看了特定页面

sql - web2py 在 SQLFORM 上默认上传

php - 安装时 SQL 语法错误 ('not null')

php - 我应该在 PHP 中检查变量是否为 NULL?