MySQL 函数,必须带回一行

标签 mysql null

我有这个简单的 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/

相关文章:

mysql - 为什么在返回列的 MAX 值时总是返回 ID 最低的行?

.net - 对空字符串和 DBNull 感到困惑

c++ - c++ std::list::front() 返回一个空列表是什么?

mysqlbinlog : Can't create/write to file '/tmp/' (Errcode: 21)

mysql - 支持在同一个表中选择和更新,创建按日期排名

使用 DocumentBuilderFactory 解析 Java XML - 空节点?

mysql - Codeigniter-计算一行中空列的数量

mysql 获取空记录

php - 如何将mysql表数据写入excel文件但不下载只存储文件

php - Codeigniter 调用非对象上的成员函数 num_rows()