gpt4 book ai didi

php - MySql NOT IN 许多来自 mysql 获取结果的值

转载 作者:行者123 更新时间:2023-11-29 12:31:06 25 4
gpt4 key购买 nike

我有 2 个相互依赖的 MySql 查询。
我的“表1”

----------
id
----------
1
2
3
4
5
6
7

我的第一个查询

$sql1 = "SELECT * FROM table1 WHERE";// some condition which gives me id's 1,2,3
$res1=$obj->_executeQuery($sql1);
$res1=$obj->getAll($res1);

结果是给我数组

Array
(
[0] => Array
(
[id] => 1
..
..
)

[1] => Array
(
[id] => 2
..
..
)
[2] => Array
(
[id] => 3
..
..
)
)

我想在同一个“table1”上运行另一个查询,其中不等于我从第一个查询中获得的 ID 列表。

我的第二个查询

$sql2 = "SELECT * FROM table1 WHERE id NOT IN (" . implode(',', $res1) . ")";

这并不是只向我显示一个 id,即第一个。在上面的例子中我应该得到 id 的 4,5,6,7

最佳答案

由于 implode 不会给出多维数组上的所需值,因此首先您需要获取所有 id 的数组 形成一维数组,然后对 id 数组使用 implode:

$id=array();
foreach ($res1 as $key=>$inner_array){
$id[]= $inner_array['id'];
}

您也可以在这里使用array_walk,如下所示:

array_walk($res1,function($c) use (&$id) {$id[] = $c['id'];});

但我认为最好的是array_map:

$id = array_map(function($i) {
return $i['id'];
}, $res1);

$sql2 = "SELECT * FROM table1 WHERE id NOT IN (" . implode(',', $id) . ")";

注意:当你进行选择时,如果你需要选择很少的列,请指定你的列,不必要的选择全部会减慢你的sql处理速度。

假设这里:SELECT * FROM table1 WHERE,如果您只需要id,那么请只选择id。

关于php - MySql NOT IN 许多来自 mysql 获取结果的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com