如何从SQL中的表联接中删除重复项

如何从SQL中的表联接中删除重复项

我已经为客户建立了一个小目录网站。

对于这个问题,我们至少需要知道以下两个:

   TABLE: places                       TABLE: tags

   | pid | name    | lat  | lng  |     | tid | pid | value |
   -------------------------------     ---------------------
   |  1  | Place 1 | x.xx | x.xx |     |  0  |  2  | tag1
   |  2  | Place 2 | x.xx | x.xx |  +  |  1  |  2  | tag2
   |  3  | Place 3 | x.xx | x.xx |     |  2  |  1  | tag1


...我想得到更多这样的东西

   | pid | name    | lat  | lng  | value      |
   --------------------------------------------
   |  2  | Place 2 | x.xx | x.xx | tag1, tag2 | <3
   |  1  | Place 1 | x.xx | x.xx | tag1       |


...而不是这样的(多数民众赞成)

   | pid | name    | lat  | lng  | value      |
   --------------------------------------------
   |  2  | Place 2 | x.xx | x.xx | tag1       |
   |  2  | Place 2 | x.xx | x.xx | tag2       |
   |  1  | Place 1 | x.xx | x.xx | tag1       |


是否可以将像上面这样的不同标签与纯SQL合并?

最佳答案

加入表后,您只需要GROUP_CONCAT

select p.pid,p.name,p.lat,p.long,group_concat(t.value) as value
from places p
join tags t on p.pid=t.pid
group by p.pid,p.name,p.lat,p.long

关于mysql - 如何从SQL中的表联接中删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42238445/

10-11 04:37