在 where 子句中使用“AND”时出现错误“参数必须是布尔类型”

Cel*_*tas 6 sql postgresql

错误:AND 的参数必须是布尔类型,而不是不同类型的字符

SELECT 
    partno, 
    count(manufacturer) 
FROM 
    components 
WHERE 
    partno IN (SELECT partno FROM productions 
               WHERE 
                    year = 2005
                AND attr is NULL
              ) 
GROUP BY partno
UNION
SELECT 
    partno, 
    count(manufacturer) 
FROM components 
WHERE 
    partno IN (SELECT partno FROM productions 
               WHERE 
                   year = 2005
               AND attr is NULL
              ) 
GROUP BY partno
) 
AND (
        partno NOT IN (SELECT partno FROM components
    )
); 
Run Code Online (Sandbox Code Playgroud)

union 后面的部分是包括所有不在生产中的组件的partno(它们应该算作0)

dav*_*vek 4

你有一个括号太多(在 后面attr IS NULL)并且你有一个没有 的聚合函数(count第二部分中的)group by。你的意思是这样吗:

select partno, count(manufacturer) 
from components 
where partno in 
(
   select partno from productions where year=2005 and attr is NULL
) 
group by partno

UNION

select partno, count(manufacturer) 
from components 
where partno in 
(
    select partno from productions where year=2005 and attr is NULL
) 
AND partno not in (select partno from components)
group by partno; 
Run Code Online (Sandbox Code Playgroud)