1

我有几张桌子:

用户

ID

设置

用户身份

我想返回用户详细信息以及在“设置”索引下的结果中可访问的给定用户的所有设置,这可能吗?

4

4 回答 4

3

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上创建的模式

于 2012-05-23T09:29:29.357 回答
1

假设您在 user_id 列中有一个索引,您可以执行以下操作:

select u.*, s.*
from Users u
inner join Settings s on (u.id = s.user_id);
于 2012-05-23T08:36:58.030 回答
1

如果我很好理解,以下查询应该做你想做的事......

SELECT Users.*, Settings.*
FROM Users 
JOIN Settings ON Settings.user_id = Users.id
于 2012-05-23T08:37:02.740 回答
1

试试 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;
于 2012-05-23T08:43:14.947 回答