如何选择一个空表,但得到一行结果(NULL +数字)?

时间:2011-08-19 11:58:42

标签: mysql

例如,我有一个表'A',其中列为number(INT)id
我知道在MySQL null + number中返回null。但是,使用IFNULL函数有解决方法:

SELECT IFNULL(NULL, 0) + @number

将返回@number。但是,如果我尝试从现有表中进行选择,结果就不一样了:

SELECT IFNULL(number, 0) + @number FROM A 

给我一​​个没有选择行的结果。

如何让MySQL显示一行,其中'number'是一个数字,所以我可以使用REPLACE语句将最小的@number插入表A? 也许有另一种方式..?

2 个答案:

答案 0 :(得分:1)

你不能 - 你从空桌上选择。返回的行数与表选择中的行数直接相关。

如果您希望A中只有一行,您可以这样做:

select IFNULL((select number from A limit 1), 0) + @number

但是,我不得不问一个更广泛的问题,即你究竟想用这个查询来实现什么,因为它可能会以更好的方式完成。

答案 1 :(得分:0)

如果这确实是一些聚合函数,那么这些行中的某些内容将始终返回1行

select MIN(IFNULL(tablesum.mysum, 0))
from 
  (select MIN(t.score) mysum from table t    
   union all 
   select @number as mysum
  ) tablesum

阅读你的评论我认为你想要 选择表的最小值(0或1行),将其与具有固定数字的行组合,然后将这些行或1行相加:

select SUM(IFNULL(d.number, 0))
from 
  (select MIN(t.number) number from table t    
   union all 
   select @number as number
  ) d