替换一个字段中的多个值和另一个表中的值

时间:2013-10-02 08:59:51

标签: mysql sql sql-server optimization replace

你好,我有两张桌子

桌面播放器

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 fidle http://sqlfiddle.com/#!2/bf206/1

1 个答案:

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