MySQL-对操作数使用集合差分时应包含1列
我有以下MYSQL查询工作:MySQL-对操作数使用集合差分时应包含1列,mysql,mysql-workbench,Mysql,Mysql Workbench,我有以下MYSQL查询工作: SELECT a.author_name, COUNT(*) FROM publication p, authored a WHERE a.pubkey = p.pubkey AND p.pubkey LIKE '%/asd/%' GROUP BY a.author_name HAVING COUNT(*) >= 1; 上面的查询是显示在包含“asd”一词的一本书中至少出版过一本书的作者的姓名 我的想法是这样
SELECT
a.author_name, COUNT(*)
FROM
publication p,
authored a
WHERE
a.pubkey = p.pubkey
AND p.pubkey LIKE '%/asd/%'
GROUP BY a.author_name
HAVING COUNT(*) >= 1;
上面的查询是显示在包含“asd”一词的一本书中至少出版过一本书的作者的姓名
我的想法是这样做的设置差异。我试图通过使用以下sql语句找到尚未出版包含“asd”一词的书籍的作者:
SELECT
a.author_name
FROM
author a,publication p
WHERE
a.pubkey = p.pubkey AND a.author_name NOT IN (SELECT
a1.author_name, COUNT(*)
FROM
publication p1,
author a1
WHERE
a1.pubkey = p1.pubkey
AND p1.pubkey LIKE '%/asd/%'
GROUP BY a1.author_name
HAVING COUNT(*) >= 1);
但由于某些原因,我一直得到这个错误“操作数应该包含1列,我无法找到错误
谢谢。尝试从内部查询中删除计数。可能是这样的
SELECT
a.author_name
FROM
author a,publication p
WHERE
a.pubkey = p.pubkey AND a.author_name NOT IN (SELECT
a1.author_name
FROM
publication p1,
author a1
WHERE
a1.pubkey = p1.pubkey
AND p1.pubkey LIKE '%/asd/%'
GROUP BY a1.author_name
HAVING COUNT(*) >= 1);
您应该能够在第一条SQL语句的WHERE子句中简单地使用NOT LIKE