gpt4 book ai didi

mysql - 如何显示mysql中不存在的记录?

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:41 25 4
gpt4 key购买 nike

如果我执行以下查询:
select * from tabla where codigo in (33,34,55,10,22,50);
msyql 显示匹配查询的记录。

但是,如果我想知道此查询中的哪些记录 (33,34,55,10,22,50) 不在数据库中怎么办?
有什么方法可以知道这一点,而不必自己比较一条记录吗?

对不起,我没有解释清楚。这向我显示了数据库中但与查询不匹配的记录。我想知道这些记录(33,34,55,10,22,50)中有哪些不在数据库中。

最佳答案

使用NOT :

select * from tabla where codigo NOT in (33,34,55,10,22,50); 

更新

根据这个新的解释,这样做:

SELECT n.id
FROM
(SELECT 33 AS codigo
UNION SELECT 34
UNION SELECT 55
UNION SELECT 10
UNION SELECT 22
UNION SELECT 50) AS n
LEFT JOIN tabla USING (codigo)
WHERE tabla.codigo IS NULL;

不幸的是,MySQL(和许多其他系统)没有提供一种简单的方法来使用某个表中不存在的任意数字列表。如果您需要动态执行此操作,我建议将这些数字添加到临时表中,以代替硬编码的 UNION 批处理。或者生成一个可重复使用的数字表(我发现这非常有用),并使用其中的值。例如:

SELECT nt.id
FROM numbers_table nt
LEFT JOIN tabla ON nt.id = tabla.codigo
WHERE nt.id IN (33,34,55,10,22,50)
AND tabla.codigo IS NULL

关于mysql - 如何显示mysql中不存在的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512002/

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