gpt4 book ai didi

mysql - 当我有一组值来检查哪些匹配项足够时,我该如何使用 IN SQL 运算符?

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

我正在运行以下查询,其中两个表都包含一个整数列:

INSERT INTO otherNumbers(number)
VALUES(
CASE
WHEN (2202 in (select * from numbers)) THEN 2
WHEN (2201 in (select * from numbers)) THEN 1
ELSE 0
END
);

我正在为一个 MySQL 服务器实例准备上面的 SQL 查询,作为该查询的一部分,我想检查某个值是否包含在一个集合中。我已经通过以下语法实现了这一点:

2202 IN(SELECT * FROM numbers)

但是,我也遇到过一组值的任何匹配都足够的情况。在伪 SQL 中,我想做这样的事情:(2202, 2203, 2204) ANY IN (SELECT * FROM numbers) 这显然是行不通的。

由于数据的性质,我想避免以下形式的逻辑爆炸:

2202 IN(SELECT * FROM numbers)或 2203 IN(SELECT * FROM numbers)或 2204 IN(SELECT * FROM numbers)

由于关于我的问题的术语非常笼统(关键字是 IN),我找不到任何描述我的问题的问题,尽管我相信有。

实现我想要的结果的最佳实践方法是什么?我可以想到的一种方法是在两个集合上使用内部联接并查看返回的行是否大于 0,但我想不出一种方法来表达这一点。

最佳答案

In 子句可以重构为内部连接

select  * 
from (
select 2202 my_num
UNION
select 2203
UNION
select 2204
) t1
INNER JOIN (
select my_col
from my_table
) t2 on t1.my_num = t2.my_col

关于mysql - 当我有一组值来检查哪些匹配项足够时,我该如何使用 IN SQL 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996036/

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