gpt4 book ai didi

mysql - SQL:从数组中返回值,其中一些值不存在于表中

转载 作者:行者123 更新时间:2023-11-29 02:54:38 24 4
gpt4 key购买 nike

如果可能的话,我正在寻找的是一个 SQL 查询来替代此方法,这样我就不必为数组中的每个值执行查询:

$array = array(1,2,3);
foreach ($array as $product) {
$stmt = $dbh->prepare("SELECT EXISTS(SELECT 1 FROM products WHERE product_id = :value LIMIT 1)");
$stmt->bindParam(':value', $product);
$stmt->execute();
if($row = $stmt->fetch())
{
...
}
}

语法可能是错误的,但像这样(基本上是从表中没有记录的数组中返回产品 ID):

$products = array(1,2,3);
$array = join(',', array_fill(0, count($products), '?'));
SELECT product_id WHERE product_id IN ($array) NOT EXISTS (SELECT 1 FROM products WHERE product_id IN ($array))

有没有办法得到这个或者我仍然需要使用循环?

最佳答案

听起来您正在寻找反加入。如果可以将 $products 插入到临时表中,则可以使用 not exists 来获取不在表中的产品 ID:

select * from temp_product_ids t
where not exists (
select 1 from products p
where p.id = t.product_id
)

另一种方法是获取所有确实存在的产品id

select id from products where id in ( $my_products )

并使用array_diff查看缺少哪些值

$missing_products = array_diff($my_products,$database_products);

关于mysql - SQL:从数组中返回值,其中一些值不存在于表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31978339/

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