行中的每个数字都有一个查询


One query for every number in row

如果我有一个数据库,其中有一个名为items的字段,其中包含'1,2,3,7,15,25,64,346'。有没有一个函数可以使用逗号作为分隔符,取每个数字,开始一个新的查询并获取该id的信息?像foreach,但在sql中?

我看得很清楚,但无法用语言表达。。。

您可以使用此查询,

SELECT * FROM TABLE_NAME WHERE COLUMN_NAME in (1,2,3,7,15,25,64,346);

是的,有。您可以使用命令IN

mysql_query( 'SELECT * FROM `table` WHERE `id` IN ( 1,2,3,4,5 );' );

其中-在中

$row =  '1,2,3,7,15,25,64,346'; // $row = $field['value']
$arr = explode(',',$row);
foreach($arr as $a) {
  // write your query
}

您可以使用查询SELECT * FROM table_name WHERE id IN ( 1,2,3,4,5 )来查找具有id的数据。

无需分离值。这会给你想要的结果。

有很多方法可以实现"SQL foreach"。使用PhP

此外,拥有这样的字段意味着数据库没有规范化。你应该看看关系数据库的规范化,否则你的数据库越大,你的问题就越大

您似乎想要这样的数据,其中"source"是具有列的表

SELECT target.* FROM target
LEFT JOIN source ON FIND_IN_SET(target.id, source.ids_row)