繁体   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