这是否可以将查询中的所有列作为空列(非空)或空行返回,以防实际查询返回没有行
答案 0 :(得分:10)
通常,如果您必须返回一个空行..
如果您的原始查询是
select a,b,c from tbl
您可以将其转换为子查询
select t.a,t.b,t.c
from (select 1 as adummy) a
left join (
select a,b,c from tbl -- original query
) t on 1=1
这可确保查询的行数始终至少为一个。
答案 1 :(得分:3)
如果您的目标是返回没有记录的查询,或者使用空记录集/数据集,则以下内容应该在没有任何先前原始查询知识的情况下工作:
SELECT * FROM (myOriginalQuery) as mySelect WHERE 0 = 1
答案 2 :(得分:0)
根据Richard的回答,您可以使用UNIONS来给您“东西” ...
select t.a, t.b, t.c
from (select null AS a, null AS b, null AS c
union ALL
select a, b, c from tbl) -- original query
) AS t
on 1=1
'1=1
'确实迫使SQL返回某些内容。