如何在mysql中实现这一点?
假设我有一个registartion表,其中有一个字段如何在mysql中实现这一点?,mysql,select,Mysql,Select,假设我有一个registartion表,其中有一个字段prefLocationId,它包含这样的值1,2,3,2,1,4,等等。。。。我有一个表prefLocation,看起来像这样 Id LocationName 1 Chennai 2 Mumbai 3 Kolkatta 4 Delhi 我想选择用户记录并显示如下值 钦奈,孟买,加尔各答,孟买,钦奈,德里等等…必须是表格预定位ID,而不是字段 然后你可以选择像 SELECT pref.*,group_concat(prefLocat
prefLocationId
,它包含这样的值1,2,3
,2
,1,4
,等等。。。。我有一个表prefLocation
,看起来像这样
Id LocationName
1 Chennai
2 Mumbai
3 Kolkatta
4 Delhi
我想选择用户记录并显示如下值
钦奈,孟买,加尔各答
,孟买
,钦奈,德里
等等…必须是表格预定位ID,而不是字段
然后你可以选择像
SELECT pref.*,group_concat(prefLocation.name)
FROM pref, prefLocationId, prefLocation
WHERE pref.LocationId=prefLocationId.pref and prefLocation.id=prefLocationId.location
GROUP BY pref.id
我几乎不想这样做,但有一个答案。只是,这是我能想象到的最糟糕的事情。你应该认真考虑弹片的答案,把你的价值分成一个单独的表格。但为了完整起见:
SELECT registration.*, GROUP_CONCAT(prefLocation.name) AS prefLocationNames
FROM registration
JOIN prefLocation ON FIND_IN_SET(prefLocation.Id, registration.prefLocationId) > 0
GROUP BY registration.id
与拆分
registration.prefLocationId
相比,这将非常缓慢,因为这绝对无法使用任何索引。有很多方法可以做到这一点,但所有方法都相当复杂。正确的解决方案是正确地规范化数据,并将这些prefLocationId
值存储在单独的表中(每行一个值)。这将使查询变得微不足道。