MySQL - 使用 Set Difference with Operand 应该包含 1 列
MySQL - Using Set Difference with Operand should contain 1 Column
我有以下 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"的一本书中显示至少出版过一本书的作者姓名。
我的想法是这样来做set difference。我试图通过使用以下 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);
我有以下 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"的一本书中显示至少出版过一本书的作者姓名。
我的想法是这样来做set difference。我试图通过使用以下 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);