如何使用子查询计算组中的多个重复条目?

时间:2014-04-15 20:07:51

标签: mysql sql

在SQL表中我需要列:book_id和author_id。

每个都是一组独特的价值观。如果我在此表中select *,我可能会得到一些值 作者ID重复几个不同的书ID,如:

 book_id    author_id
|    1627 | W3145     |
|    1628 | W3145     |
|    1629 | W3145     |
|    1630 | W3145     |

我想要做的是选择所有使用完全子查询重复多次的作者ID。

所以每当author_id>的计数时对于每个这样的ID组,我可以获得此作者ID。

(请不要提供任何不包含子查询的建议或评论。)

2 个答案:

答案 0 :(得分:0)

选择author_id (选择来自mytable group by author_id的count(book_id))作为booksPerAuthor 来自mytable 其中booksPerAuthor> 1;

答案 1 :(得分:0)

这样做的好方法:

SELECT
    author_id
    ,count(book_id)
FROM
    table_name
WHERE
    count(book_id) > 1
GROUP BY
    author_id

这样做的方法不好:

SELECT DISTINCT
    t.author_id
FROM
    table_name t
WHERE
    (SELECT count(subT.book_id) from table_name subT where subT.author_id = t.author_id) > 1

我不知道我是怎么写的:O