Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确使用IN子句从MySQL中的另一列获取值?_Mysql_Group Concat - Fatal编程技术网

如何正确使用IN子句从MySQL中的另一列获取值?

如何正确使用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

在一个表格中,我有一个城市列表,在另一个表格中,我有一个客户列表。在客户机上,我有一个varchar列,标识由逗号分隔的城市列表,例如:2,3,4

当我试图列出客户的城市时,它只显示列表中的第一个城市。 似乎在值上添加了一些引号,如:

选择GROUP_CONCATcity.name 来自“2,3,4”中的城市where city.id_city

怎样才能避免这种情况


您不能直接将列表传递给查询。您需要将代码更改为-

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;