3

有没有办法在 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

4

1 回答 1

5

所有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

您需要将别名放在具有强制转换/转换的第一个选择语句中。在第二条语句中,您需要包含与第一条相同的列数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
于 2013-09-13T08:41:55.253 回答