Sql 如果查询没有返回行,如何保证有行?
我有以下联合查询:Sql 如果查询没有返回行,如何保证有行?,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,我有以下联合查询: select dataItem,1 as sortOrder from table1 union select dataItem,2 from table2 order by sortOrder 如果第一个select查询返回一行,第二个select查询不返回任何行,那么我得到以下结果: dataItem | sortOrder ---------+---------- 12345 | 1 我希望确保始终至少有一行,这样,如果seconde查询不返回任何行,我们将有
select dataItem,1 as sortOrder from table1
union
select dataItem,2 from table2
order by sortOrder
如果第一个select
查询返回一行,第二个select
查询不返回任何行,那么我得到以下结果:
dataItem | sortOrder
---------+----------
12345 | 1
我希望确保始终至少有一行,这样,如果seconde查询不返回任何行,我们将有:
dataItem | sortOrder
---------+----------
12345 | 1
0 | 2
如何实现这一点?我们的想法是添加max(dataItem)或0的并集。不确定访问语法
select dataItem,1 as sortOrder from table1
union
select dataItem, 2 from table2
union
select iif(max(dataItem) is null, 0, max(dataItem)), 2 from table2
order by sortOrder
您可以再添加一个
联合
,此查询
检查表2中是否有行
,如果没有行
,则返回带有默认值的行
select dataItem,1 as sortOrder from table1
union
select dataItem,2 from table2
union
select 0,2
where not exists (select 1 from table2)
order by sortOrder
创建一个将返回rowtype的函数,并在此函数内检查是否没有行,创建一个新的并返回它。欢迎使用此代码段,并可能提供一些帮助,这将是如何以及为什么解决问题的方法。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。