【发布时间】:2012-09-02 18:15:50
【问题描述】:
我在 mysql 中使用 GROUP_CONCAT() 从存储的 ID 列表中检索数据,如下所示:
**Table : Visitor**
ID | name | id_visited_place
--------------------------
1 | tom | 222,235,455
**Table : Places**
ID | Country | City | Date
--------------------------------------
222 | France | Paris | 2010-08-11
235 | Belgium | Antwerp | 2009-04-24
455 | Germany | Berlin | 2009-03-17
问题是这个查询只返回一个字段:
SELECT visitor.*, GROUP_CONCAT(places.country) AS country FROM visitor
LEFT JOIN Places ON FIND_IN_SET(places.id, visitor.id_visited_place)
GROUP BY visitor.id
但是对于 id_visited_place 中的每个 ID,我想返回与该 ID 关联的每个字段,例如:“我在 2010- 08-11”
【问题讨论】:
-
如果
Date在Places表中,如何知道它与哪个Visitor相关?你真的应该规范化你的模式并创建一个(visitor_id, place_id, date_of_visit)元组的表。除此之外,您是否追求过类似sqlfiddle 的东西? -
我的数据库并没有完全像这样建立起来。这只是一些基本布局来说明我正在尝试做的事情:获取与 GROUP_CONCAT 选择的行相关的所有数据
标签: mysql select field group-concat