两张桌子,有一对多的关系。如何连接没有重复行的值?

时间:2013-07-17 08:47:28

标签: mysql database pdo

我有一个名为“消息”的表,另一个叫做“投票”。每条消息可以有多个投票,问题实际上它们放在不同的行中。我该如何修复它?

实际查询是:

SELECT messages.ID, votations.value
FROM messages 
LEFT JOIN votations ON messages.ID=votations.messageID

enter image description here

1 个答案:

答案 0 :(得分:2)

不幸的是,你无法在MySQL中完全做到这一点。在结果集中,您不能拥有具有不同(数量)列的行。您需要实现一些应用程序逻辑。你可以得到的最接近的是:

select m.id, GROUP_CONCAT(voto SEPARATOR ',') 
from messages m 
left join votations v on v.messageID = m.id
group by m.id;

这将返回以下格式:

ID  GROUP_CONCAT(VOTO SEPARATOR ',')
1   2,5,6
2   2,12,3

你可以在这里看到这个:http://sqlfiddle.com/#!2/241a8/3