0

我有三个表 RESOURCES、SERVERS、ACTIVE_RESOURCES。HOSTED_RESOURCES 表服务器作为参考表来列出资源在哪些服务器上处于活动状态。目前我使用下面的查询来检索资源:

SELECT r.resource_id, r.serve_url, r.title, r.category_id, ar.server_id
FROM active_resources ar
LEFT JOIN resources AS r ON (ar.resource_id = r.id)
WHERE hr.resource_id = (
    select id from resources
    and id < 311
    order by date_added desc
    limit 1
);

因为在大多数情况下,所有服务器上的资源都可用,所以我最终会在查询结果中得到重复的信息,例如:

resource_id  | serve_url    | Title                 | category_id | server_id
-----------------------------------------------------------------------------
 309         | /b/7514.pdf  | Tuesdays with Morrie  | 1           | 1
 309         | /b/7514.pdf  | Tuesdays with Morrie  | 1           | 2

所有数据,除了server_id是重复的,所以我希望将结果连接到一行,在附加列中显示服务器 ID,或者甚至只是将服务器 ID 列为一列中的逗号分隔。

谢谢你看这个。

4

1 回答 1

0
SELECT r.resource_id, r.serve_url, r.title, r.category_id, 
GROUP_CONCAT(ar.server_id) AS server_id
FROM active_resources ar
LEFT JOIN resources AS r ON (ar.resource_id = r.id)
WHERE hr.resource_id = (
    select id from resources
    and id < 311
    order by date_added desc
    limit 1
)
GROUP BY r.resource_id, r.serve_url, r.title, r.category_id
;
于 2013-05-28T18:44:06.320 回答