mysql - 为什么我在此查询中得到 NULL?

标签 mysql

我想从 kullnr 中获取最大值,其中 ras 的值是 1、2 和 3。但是当我运行这个查询时,我得到的都是 NULL三。这是代码:

SELECT MAX( k1.kullnr ) , MAX( k2.kullnr ) , MAX( k3.kullnr )
FROM kull AS k1
JOIN kull AS k2 ON k1.kullnr = k2.kullnr
JOIN kull AS k3 ON k1.kullnr = k3.kullnr
WHERE k1.ras =0
AND k2.ras =1
AND k3.ras =2 

如果我运行彼此分开的查询,它们工作正常。例如:

SELECT MAX(kullnr) FROM kull WHERE ras=0

但是由于极端的内存限制,我无法分开运行查询。我怎样才能使单一查询版本工作?

最佳答案

除非您所有的最大 kullnr 字段都具有相同的值,否则您将得到 null,因为您加入了您试图最大化的字段。我认为这更符合您的要求:

SELECT k1.kullnr, k2.kullnr, k3.kullnr
FROM
(SELECT MAX(kullnr) AS kullnr FROM kull WHERE ras = 0) k1,
(SELECT MAX(kullnr) AS kullnr FROM kull WHERE ras = 1) k2,
(SELECT MAX(kullnr) AS kullnr FROM kull WHERE ras = 2) k3

不过,如果可以的话,我真的不认为我会这样做。如果您不需要同一行中的所有最大值,另一个查询可能是:

SELECT   ras, MAX(kullnr)
FROM     kull
GROUP BY ras
HAVING   ras = 0 OR ras = 1 OR ras = 2

关于mysql - 为什么我在此查询中得到 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5519153/

相关文章:

Java Hibernate 无法连接 MySQL 数据库

php - 如何将表单中输入的特殊字符转换成相似的英文字符再放入数据库?

mysql - 使用用户输入从两个表中插入选择

python - sqlalchemy session 无法识别 mysql 数据库中的更改(由其他进程完成)

mysql:像 SQS 一样的排他性选择?

mysql - 错误的 MySQL 更新查询后恢复?

mysql - 表上的 LEFT JOIN。* 作为别名?

php - 如何将 jQuery 表发送到 Mysql 数据库?

mysql - 从最近的条目按字段排序多行

mysql - 从两个表中删除 id 相等的行