例如,我有一个空表'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?
也许有另一种方式..?
答案 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