好吧,通常我知道你会做这样的事情你知道数组值:
SELECT * WHERE id IN (1,2,3)
但是...我不知道数组值,我只知道我想在"储存"阵列发现的价值:
SELECT * WHERE 3 IN (ids) // Where 'ids' is an array of values 1,2,3
哪个不起作用.还有另一种方法吗?
OMG*_*ies 72
SELECT t.*
  FROM YOUR_TABLE t
 WHERE FIND_IN_SET(3, t.ids) > 0
Vot*_*ple 18
当查询到达SQL时,您必须已经扩展了列表.这样做的简单方法是,如果您使用来自某个内部可信数据源的ID,您可以100%确定它们是整数(例如,如果您之前从数据库中选择它们)是这样的:
$sql = 'SELECT * WHERE id IN (' . implode(',', $ids) . ')';
但是,如果您的数据来自用户,则需要确保只获取整数值,可能最容易如此:
$sql = 'SELECT * WHERE id IN (' . implode(',', array_map('intval', $ids)) . ')';
小智 9
如果数组元素不是整数,则可以使用以下内容:
$skus  = array('LDRES10','LDRES12','LDRES11');   //sample data
if(!empty($skus)){     
    $sql = "SELECT * FROM `products` WHERE `prodCode` IN ('" . implode("','", $skus) . "') "      
}
小智 5
如果使用该FIND_IN_SET功能:
FIND_IN_SET(a, columnname) 单独或与其他人一起产生所有带有“ a”的记录 
和
FIND_IN_SET(columnname, a) 仅产生仅在其中包含“ a”的记录,而不产生与其他记录
所以如果record1是(a,b,c)而record2是(a)
FIND_IN_SET(columnname, a)仅产生record2而FIND_IN_SET(a, columnname)产生两个记录。