簡體   English   中英

SQL組LEFT JOIN結果

[英]SQL Group LEFT JOIN result

我有幾張桌子:

用戶數

ID

設定值

用戶身份

我想返回用戶詳細信息以及在“設置”索引下可訪問結果的給定用戶的所有設置,這可能嗎?

Postgresql具有ARRAY_AGG函數,它將為您完成串聯。 例如

SELECT  Users.ID, 
        ARRAY_AGG(COALESCE(Name || ' : ' || Value, '')) AS Settings
FROM    Users
        LEFT JOIN Settings
            ON Users.ID = Settings.User_ID
GROUP BY Users.ID

您的表結構有點模糊,因此以上內容基於我在SQL Fiddle上創建的架構

假設您在user_id列中有一個索引,則可以執行以下操作:

select u.*, s.*
from Users u
inner join Settings s on (u.id = s.user_id);

如果我很好理解,以下查詢應該做您想要的...

SELECT Users.*, Settings.*
FROM Users 
JOIN Settings ON Settings.user_id = Users.id

試試GROUP_CONCAT

像這樣的MySQL?

SELECT u.id, GROUP_CONCAT(s.id)  
FROM Users u  
INNER JOIN Settings s ON u.id = s.user_id 
GROUP BY u.id;

編輯:

PostgreSQL版本:

SELECT u.id, STRING_AGG(s.id)  
FROM Users AS u  
INNER JOIN Settings AS s ON u.id = s.user_id 
GROUP BY u.id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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