gpt4 book ai didi

mysql - 在 "in"运算符上指定表列

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

我想知道是否有任何快捷方式可以指定 IN 必须检查匹配项的列。

例子:
而不是这个:

select * 
from table1
where id in(
select column
from table2
)

像这样:

select * 
from table1
where id in table2.column

我知道 TABLE 的存在,用于 IN, ANY, SOME 来指定一个表,但只有当指定的表仅由 1 列组成时它才有效

编辑:使用 join 不是一个选项,因为我一直在寻找的真正用途是在 NOT IN 运算符上,而且JOIN 有时像在一对多关系中创建重复项

最佳答案

SQL 中没有这样的捷径。让我解释一下原因。

在查询中,所有 表引用都需要在FROM 子句中进行。因此,您不能简单地引用 table2.col 除非 table2 已在 FROM 子句中定义。 table2 实际上是一个别名,默认为表名。

从性能的角度来看,我会推荐 exists:

select t1.* 
from table1 t1
where exists (select column
from table2 t2
where t2.column = t1.id
)

特别是,这可以利用 table2(column) 上的索引,并且具有与 in 相同的语义。

关于mysql - 在 "in"运算符上指定表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548507/

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