如何正确使用IN子句从MySQL中的另一列获取值?
在一个表格中,我有一个城市列表,在另一个表格中,我有一个客户列表。在客户机上,我有一个varchar列,标识由逗号分隔的城市列表,例如:2,3,4 当我试图列出客户的城市时,它只显示列表中的第一个城市。 似乎在值上添加了一些引号,如: 选择GROUP_CONCATcity.name 来自“2,3,4”中的城市where city.id_city 怎样才能避免这种情况如何正确使用IN子句从MySQL中的另一列获取值?,mysql,group-concat,Mysql,Group Concat,在一个表格中,我有一个城市列表,在另一个表格中,我有一个客户列表。在客户机上,我有一个varchar列,标识由逗号分隔的城市列表,例如:2,3,4 当我试图列出客户的城市时,它只显示列表中的第一个城市。 似乎在值上添加了一些引号,如: 选择GROUP_CONCATcity.name 来自“2,3,4”中的城市where city.id_city 怎样才能避免这种情况 您不能直接将列表传递给查询。您需要将代码更改为- SELECT client.id_client, client.n
您不能直接将列表传递给查询。您需要将代码更改为-
SELECT client.id_client,
client.name,
(SELECT GROUP_CONCAT(city.name)
FROM city
WHERE FIND_IN_SET(city.id_city, client.cities) <> 0) AS cities
FROM client;
虽然这解决了你的目的,但我认为你必须考虑访问链接,清楚地表明存储逗号分隔的值真的是一个很坏的想法。< /P>这是否回答了你的问题?
SELECT client.id_client,
client.name,
(SELECT GROUP_CONCAT(city.name)
FROM city
WHERE FIND_IN_SET(city.id_city, client.cities) <> 0) AS cities
FROM client;