2013-10-02 22 views
-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 

my sql fidle http://sqlfiddle.com/#!2/bf206/1

+0

這是MySQL還是SQL Server?請只使用適用的。 – Dukeling

+3

**不要存儲逗號分隔值請先標準化您的結構** –

+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 
+0

這個結果來自你的sql只有一行。 http://sqlfiddle.com/#!2/bf206/6 – jevrie

+0

修正了錯誤(忘記了group by子句.....) – Kickstart

+0

這是工作之前的感謝。 :d – jevrie

相關問題