Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
Php 从查询中删除引号:IN()MySql_Php_Mysql - Fatal编程技术网

Php 从查询中删除引号:IN()MySql

Php 从查询中删除引号:IN()MySql,php,mysql,Php,Mysql,若我在查询中给出硬编码的值,它就可以工作,但在子查询或列给定的情况下就不行了 以下是我面临的问题的一个小例子: 这两个查询后面都是一种子查询,就像它是另一个查询的一部分一样,所以不要认为表'm'和其他东西在哪里,因为它已经在工作了 我的问题是: 一, 而m.associated_admin将返回一个带引号的字符串,如'1,10',因此这将不起作用,因为它是一个字符串 二, 如果我写像1,10这样的硬代码,它会工作,因为它不是字符串 所以第一个查询不起作用,因为该查询作为子查询是另一个查询的一部分

若我在查询中给出硬编码的值,它就可以工作,但在子查询或列给定的情况下就不行了

以下是我面临的问题的一个小例子:

这两个查询后面都是一种子查询,就像它是另一个查询的一部分一样,所以不要认为表'm'和其他东西在哪里,因为它已经在工作了

我的问题是:

一,

而m.associated_admin将返回一个带引号的字符串,如'1,10',因此这将不起作用,因为它是一个字符串

二,

如果我写像1,10这样的硬代码,它会工作,因为它不是字符串

所以第一个查询不起作用,因为该查询作为子查询是另一个查询的一部分


我确信这个问题不能重复,因为我正以这种方式面对它,所以任何帮助都将不胜感激,谢谢读者

您可以在中创建子查询,例如:

SELECT group_concat(CONCAT(a_u.first_name,' ', a_u.last_name)) AS associated_admin_u 
FROM users a_u WHERE a_u.id IN(
   SELECT id FROM mytable WHERE id IN(1,10)
) GROUP BY m.id

根据您的评论,您需要以下内容:

SELECT GROUP_CONCAT(CONCAT(a_u.first_name,' ', a_u.last_name)) AS associated_admin_u 
  FROM users a_u 
 WHERE FIND_IN_SET(a_u.id, TRIM(BOTH '\'' FROM m.associated_admin)) 
 GROUP 
    BY m.id

这将首先从m.associated_admin中删除引号,然后使用FIND_IN_SET而不是IN,这样您就可以使用带有逗号分隔值的字符串。

请参阅检查您的子查询是否返回单个值。这个答案可能会有所帮助,谢谢Daan,但正如我所说的,如果查询中的IN'1,10'中有可用的引号,则它将不起作用。@Jigar7521在这种情况下,您可能应该规范化您的数据库。是的,但这不是我的解决方案,我需要某种逻辑来删除'1,10'@Jigar7521什么引号?我没有在IN中添加任何引用。啊,你的专栏中实际上有1,10。感谢您澄清@jeroenPerfect jeroen!这正是我想要的,谢谢+1
SELECT group_concat(CONCAT(a_u.first_name,' ', a_u.last_name)) AS associated_admin_u 
FROM users a_u WHERE a_u.id IN(
   SELECT id FROM mytable WHERE id IN(1,10)
) GROUP BY m.id
SELECT GROUP_CONCAT(CONCAT(a_u.first_name,' ', a_u.last_name)) AS associated_admin_u 
  FROM users a_u 
 WHERE FIND_IN_SET(a_u.id, TRIM(BOTH '\'' FROM m.associated_admin)) 
 GROUP 
    BY m.id