我有一个问题。我想知道当双方都有多个值时如何使用 IN
语句(在查询中) -
我正在写一个查询:
SELECT name FROM math_Details WHERE cric_ids in (1,2,3,4,8);
在这个查询问题中,cric_ids
列中也有多个值通过 (,comma) 分隔;
像 (5,9,1,10,2)
请帮帮我好吗?
最佳答案
您可以使用 MySQL 的 FIND_IN_SET()
重复函数:
SELECT name
FROM math_Details
WHERE FIND_IN_SET(1, cric_ids) OR FIND_IN_SET(2, cric_ids)
OR FIND_IN_SET(3, cric_ids) OR FIND_IN_SET(4, cric_ids)
OR FIND_IN_SET(8, cric_ids)
这样的语句可以在 PHP 中动态构建。例如,使用 prepared statements在 PDO :
$set = [1,2,3,4,8];
$sql = 'SELECT name FROM math_Details WHERE FALSE'
. str_repeat(' OR FIND_IN_SET(?, cric_ids)', count($set));
$qry = $dbh->prepare($sql);
$qry->execute($set)
但是,正如其他人所说,这表明数据库设计不佳。你应该考虑 normalising你的数据结构,这样你就有了一个表,而不是 cric_ids
字段,而是将 math_Details
中的记录与每个 cric
相关联。
关于php - 当双方都有多个值时如何在sql中使用IN语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932048/