有没有办法在sql中组合2个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
答案 0 :(得分:5)
select
语句的AlL必须具有相同的列数,您可以通过添加带有别名的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语句中。在第二个语句中,您需要包含与null
的第一列相同的列数。
修改强>:
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