Sql 组合2个select语句结果集
有没有一种方法可以组合sql中两条select语句的结果?(与Union运算符类似-但Union仅适用于相同数量和类型的列) 我想做一些像Sql 组合2个select语句结果集,sql,derby,Sql,Derby,有没有一种方法可以组合sql中两条select语句的结果?(与Union运算符类似-但Union仅适用于相同数量和类型的列) 我想做一些像 SELECT * FROM JOBS j UNION SELECT COUNT(fj.Id_Filter) FROM JOBS j LEFT JOIN FILTER_JOBS fj ON j.Id=fj.Id_Job 但它不适用于UNION所有select语句必须具有相同的列数,您可以通过添加带别名的null值列来完成此操作,例如: SELECT ca
SELECT * FROM JOBS j
UNION
SELECT COUNT(fj.Id_Filter) FROM JOBS j LEFT JOIN FILTER_JOBS fj ON j.Id=fj.Id_Job
但它不适用于UNION所有
select
语句必须具有相同的列数,您可以通过添加带别名的null
值列来完成此操作,例如:
SELECT cast(null as int) as cnt,col1,col2 FROM JOBS j
UNION
SELECT COUNT(fj.Id_Filter),null,null FROM JOBS j LEFT JOIN FILTER_JOBS fj ON j.Id=fj.Id_Job
您需要使用强制转换/转换在第一个select语句中放置别名。在第2条语句中,您需要使用null
包含与第1条相同的列数
编辑:
SELECT cast(null as int) as cnt,j.* FROM JOBS j
UNION
SELECT COUNT(fj.Id_Filter),j.* FROM JOBS j LEFT JOIN FILTER_JOBS fj ON j.Id=fj.Id_Job
除了在您的第一个查询中添加几个空列之外,我不知道其他方法,但我在表作业中有54列。。。因此,这个语句将非常难看,有54个null和54列…@fm_strategy Try第二个解决方案错误:语法错误:在第1行第33列遇到“*”。SQLState:42X01错误代码:30000@fm_strategy尝试将
j.*
添加到上述第一个select语句中,因为COUNT()
是一个聚合函数,在第二个解决方案中,您是否需要为每个j
字段设置一个group by?