mySQL - 计算不同用户具有相同值的实例数

mySQL - count the number of instances with the same value, for a different user

我有一个 table、ReadingList,它由几列组成。为了简单起见,我们称它们为:

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;