When sql uses in as a condition, a parameter is used to satisfy the query condition, and passing in the string directly cannot satisfy the condition.
select id,name from user where id in(?)
Use FIND_IN_SET(str,strlist) function
select id,name from user where FIND_IN_SET(id,#{strlist})
##str: Conditional field
strlist: matching value set
select id,name from user where FIND_IN_SET(id,'111,22,333')
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE ur.id IN (T1.limit_user) GROUP BY ur.id ) AS limit_user FROM account T1 WHERE 1 = 1
‘9,8,4’Query sql The correct query result should be:
Not recommended, promote customers, promote customersThe actual result is:
Not recommended
Reason:
If in in mysql is a string, it will be automatically converted into int type. The following method is used internally:CAST('4,3' AS INT)
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE FIND_IN_SET(ur.id, T1.limit_user) > 0 ) AS limit_user, T1.limit_user limit_userid FROM account T1 WHERE 1 = 1
The above is the detailed content of What is the method of using string in in condition in mysql. For more information, please follow other related articles on the PHP Chinese website!