[英]SQL- query which finds the name of a specific row which has max linked columns from another table
有2個表:
users: id, name
albums: id, user_id
我需要一個SQL查詢來查找擁有最大相冊數量的用戶的NAME。 我怎么做?
到目前為止,這是我嘗試過的-
SELECT Users.name
FROM Users
JOIN Albums
ON Users.id = Albums.user_id
HAVING COUNT(Albums.id) = MAX(COUNT(Albums.id));
(這不起作用)
您可以使用限制1
select Users.name, count(distinct Albums.id) max_count
from Users
INNER JOIN Albums on Users.id = Albums.user_id
GROUP BY Users.name
ORDER max_count desc limit 1
或過濾最大數量的beas以獲得最大數量
select Users.name
from Users
INNER JOIN Albums on Users.id = Albums.user_id
GROUP BY Users.name
HAVING count(distinct Albums.id) = (
select max(t.max_count) from (
select Users.name, count(distinct Albums.id) max_count
from Users
INNER JOIN Albums on Users.id = Albums.user_id
GROUP BY Users.name
) t
)
我將簡單地使用join
, group by
和limit
:
SELECT u.name
FROM Users u JOIN
Albums a
ON u.id = a.user_id
GROUP BY u.name
ORDER BY COUNT(*) DESC
LIMIT 1;
這有一些假設:
GROUP BY
包括u.id
此子查詢應返回具有最大相冊數量的用戶名。
SELECT name FROM Users WHERE id = (SELECT user_id FROM Albums GROUP BY user_id ORDER BY COUNT(*) DESC LIMIT 1);
這是用於將user_id與出現的每個user_id的COUNT進行分組的GROUP BY,否則返回表中所有記錄的計數。
如果存在多個具有相同計數的最大次數,則必須使用IN關鍵字進行查詢以返回所有名稱,並且查詢將有些復雜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.