将重复的行信息显示为额外列

时间:2013-05-28 18:42:05

标签: mysql

我有三个表RESOURCES,SERVERS,ACTIVE_RESOURCES。 HOSTED_RESOURCES表服务器作为参照表,列出资源处于活动状态的服务器。目前我使用bellow查询来检索资源:

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列为逗号分隔的一个列。

感谢您关注此事。

1 个答案:

答案 0 :(得分: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
;