我有这个简单的 MySQL 语句:
SELECT
((AVG(q1) + AVG(q8) + AVG(q15)) / 3 ) AS Res
FROM tresults
WHERE id = '1' AND date = 'MARCH2010' AND q25 = '1'
GROUP BY q25
现在,如果没有日期为 MARCH2010 的行,那么查询将返回零结果(这是正确的)但我希望它返回一行 - 即使结果是 空。
最佳答案
您可以只选择一行作为常量,然后将其左连接
到您的结果集中:
select l.*, r.*
from (select "your constant" as constant) as l
left join (
SELECT
((AVG(q1) + AVG(q8) + AVG(q15)) / 3 ) AS Res
FROM tresults
WHERE id = '1' AND date = 'MARCH2010' AND q25 = '1'
GROUP BY q25
) as r on 1
这是如何工作的:
select "your constant"as constant
总是返回一行left join
总是返回left
表中的所有行至少一次- 如果
right
表没有行,则整个left
表用一堆空列扩展,结果只有一行 - 如果
右边的
表有 n 行,则结果有 n 行,每行都有一个额外的“您的常量”列
关于MySQL 函数,必须带回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279308/