-2

你好我有两张桌子

桌上播放器

id     Player           Position 
1      Messi            1,2,4 
2      C.Ronaldo        1,2,3 
3      Neymar           2,3

桌子位置

id             pos 
1              CF 
2              ST 
3              WF 
4              MF

我想要这样的输出

id     player         pos 
1      Messi          CF,ST,MF 
2      C.Ronaldo      CF,ST,WF 
3      Neymar         ST,WF

我的 sql 文件http://sqlfiddle.com/#!2/bf206/1

4

1 回答 1

1

你真的不应该像这样使用逗号分隔的字段。难以阅读,效率低下,并且会在未来造成重大问题。

但是,如果玩家的位置顺序不重要,则可以像这样做你想做的事情:-

SELECT a.id, a.Player, GROUP_CONCAT(b.pos)
FROM player a
INNER JOIN position b
ON FIND_IN_SET(b.id, a.position) > 0
GROUP BY a.id, a.player

为了保持订单,你可以试试这个(未经测试): -

SELECT a.id, a.Player, GROUP_CONCAT(b.pos ORDER BY FIND_IN_SET(b.id, a.position))
FROM player a
INNER JOIN position b
ON FIND_IN_SET(b.id, a.position) > 0
GROUP BY a.id, a.player
于 2013-10-02T11:07:26.350 回答