簡體   English   中英

SQL查詢可查找特定行的名稱,該行的最大鏈接來自另一個表

[英]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
)

我將簡單地使用joingroup bylimit

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM