mySQL - 计算不同用户具有相同值的实例数
mySQL - count the number of instances with the same value, for a different user
我有一个 table、ReadingList,它由几列组成。为了简单起见,我们称它们为:
- reading_id
- link_id_fk
- user_id_fk
reading_id
只是一个 AI 键。 link_id_fk
可以存在多次(每个 user_id_fk
)
我想做的是找到大多数用户存储的 前 10link_id_fk
值。
这是我的垃圾尝试(我只得到 145 返回,我不确定它从哪里得到那个数字 - 但它肯定不是我期待的数字:))
SELECT
*,
(SELECT COUNT(*)
FROM ReadingList
WHERE link_id_fk = ReadingList.link_id_fk) AS total_saves
FROM
ReadingList
WHERE
user_id_fk IN ('test123', 'test2') AND
link_id_fk > 0 AND deleted = 0;
所需的示例输出为:
link_id_fk total_saves
12 3
34 2
56 1
78 1
谁能指出我正确的方向?
谢谢!
您可以在子查询中使用 GROUP BY
:
SELECT rl2.link_id_fk, rl2.nb_link
FROM (
SELECT link_id_fk, count(*) as nb_link
FROM ReadingList
WHERE
user_id_fk IN ('test123','test2')
AND link_id_fk > 0
AND deleted = 0
GROUP BY link_id_fk
) as rl2
ORDER BY rl2.nb_link DESC
LIMIT 10;
我有一个 table、ReadingList,它由几列组成。为了简单起见,我们称它们为:
- reading_id
- link_id_fk
- user_id_fk
reading_id
只是一个 AI 键。 link_id_fk
可以存在多次(每个 user_id_fk
)
我想做的是找到大多数用户存储的 前 10link_id_fk
值。
这是我的垃圾尝试(我只得到 145 返回,我不确定它从哪里得到那个数字 - 但它肯定不是我期待的数字:))
SELECT
*,
(SELECT COUNT(*)
FROM ReadingList
WHERE link_id_fk = ReadingList.link_id_fk) AS total_saves
FROM
ReadingList
WHERE
user_id_fk IN ('test123', 'test2') AND
link_id_fk > 0 AND deleted = 0;
所需的示例输出为:
link_id_fk total_saves
12 3
34 2
56 1
78 1
谁能指出我正确的方向?
谢谢!
您可以在子查询中使用 GROUP BY
:
SELECT rl2.link_id_fk, rl2.nb_link
FROM (
SELECT link_id_fk, count(*) as nb_link
FROM ReadingList
WHERE
user_id_fk IN ('test123','test2')
AND link_id_fk > 0
AND deleted = 0
GROUP BY link_id_fk
) as rl2
ORDER BY rl2.nb_link DESC
LIMIT 10;