【发布时间】:2011-07-25 00:04:08
【问题描述】:
我有一张包含 ID 列表的表格。我使用查询来选择它,然后将其作为数组获取(我知道如何执行此操作)。然后我想从另一个表中选择行,其中 ID 位于之前获取的数组中。
我该怎么做?提前致谢。
【问题讨论】:
我有一张包含 ID 列表的表格。我使用查询来选择它,然后将其作为数组获取(我知道如何执行此操作)。然后我想从另一个表中选择行,其中 ID 位于之前获取的数组中。
我该怎么做?提前致谢。
【问题讨论】:
select value1,value2 from table2 where id in (1,2,3,4,5)
【讨论】:
您很可能想要进行WHERE field IN (...) 类型的查询。对于IN 子句中列出的每个值,它基本上等同于WHERE field=X or field=Y or field=Z or ...。
鉴于您已经有了一个 ID 数组,最简单的方法是像这样构建查询:
$where_in = implode(',', $ids_array);
$query = "SELECT ... FROM yourtable WHERE idfield IN ($where_in);";
适用通常的附带条件 - 小心 SQL 注入漏洞,始终检查查询结果是否失败等...
【讨论】:
$query = "SELECT ... FROM yourtable WHERE idfield IN (".$where_in.")";吗?
【讨论】:
您可以在一个查询中完成此操作
类似的东西
SELECT table2.id FROM table2 WHERE table2.id IN (SELECT table1.id FROM table1 WHERE blablabla)
【讨论】:
假设$values是数组,可以使用mysql IN关键字和php implode函数构造查询
$sql = "SELECT a, b FROM table WHERE id IN (" . implode(", ",$values) . ")";
implode 将使用 ", " 连接数组的元素
【讨论】: