我想从 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/