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