MySQL - 如何选择值在数组中的行?

2022-08-30 10:42:32

好吧,通常我知道如果你知道数组值(在本例中为1,2,3),你会做这样的事情:

SELECT * WHERE id IN (1,2,3)

但我不知道数组值,我只知道我想找到的值“存储”在数组中:

SELECT * WHERE 3 IN (ids) // Where 'ids' is an array of values 1,2,3

这不起作用。有没有另一种方法可以做到这一点?


答案 1

使用FIND_IN_SET函数

SELECT t.*
  FROM YOUR_TABLE t
 WHERE FIND_IN_SET(3, t.ids) > 0

答案 2

当查询到达 SQL 时,您必须已经展开了列表。如果您使用来自某些内部受信任数据源的ID,则可以100%确定它们是整数(例如,如果您之前从数据库中选择了它们),那么最简单的方法是:

$sql = 'SELECT * WHERE id IN (' . implode(',', $ids) . ')';

但是,如果您的数据来自用户,则需要确保仅获得整数值,也许最容易做到:

$sql = 'SELECT * WHERE id IN (' . implode(',', array_map('intval', $ids)) . ')';

推荐