错误: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)
你有一个括号太多(在 后面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)