gpt4 book ai didi

mysql - 有没有办法识别那些在 where IN() 语句中找不到的记录?

转载 作者:可可西里 更新时间:2023-11-01 07:08:57 24 4
gpt4 key购买 nike

来自 PHP 代码 $Lines 被定义为加入列表,例如123,146,165,1546,455,155

plant 表具有最高 idPlant(唯一标识符)例如 1000 的顺序记录。

我的简单 SQL 查询:

SELECT * FROM plant WHERE `plant`.idPlant IN($Lines) order by plant.idPlant;

这会返回“123,146,165”等的行数据。

是否会被告知未找到“1546”? (因此用户可能输入了错字,我不能使用“确认所有数字都低于 X”,因为在真实数据中 idPlant 可能不是连续的,上限会在使用过程中增加)。

更新:

希望获得能够告诉我未找到哪些数字的输出。

最佳答案

您可以使用返回所有值列表的联合构建子查询,然后针对它进行 LEFT JOIN,检查 WHERE 子句中的 NULL 以查找不匹配的值。

基本的 php 应该是这样的:-

<?php

$sub_array = explode(',', $Lines);

$sub = '(SELECT '.implode(' AS i UNION SELECT ', $sub_array).' AS i) sub0';

$sql = "SELECT sub0.i
FROM $sub
LEFT OUTER JOIN plant
ON plant.idPlant = sub0.i
WHERE plant.idPlant IS NULL";

?>

关于mysql - 有没有办法识别那些在 where IN() 语句中找不到的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822294/

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