gpt4 book ai didi

mysql - 检查表a是否存在表b中的主键

转载 作者:行者123 更新时间:2023-12-01 00:35:51 24 4
gpt4 key购买 nike

表A:ID、姓名等

表 B:ID,TableA-ID。

SELECT * FROM A;

并且我想针对此条件(如果 A.ID 存在于表 B 中)在相同结果中返回一个 bool 值。

最佳答案

有多种方法可以实现您的需求。以下是三种可能性。这些都在执行计划和数据库实际想要执行它们的方式上有所不同,因此根据您的记录数,一个可能比另一个更有效。最好亲眼看看。


1) 使用 LEFT JOIN 并检查 B 中的非空字段是否不为空以确保记录存在。如果关系为 1:N,则应用 DISTINCT 子句以仅显示 A 中没有重复的行。

select distinct a.*, b.id is not null as exists_b
from a
left join b on
a.id = b.tablea-id

2) 使用 exists() 函数,它将针对从表 A 返回的每一行进行评估。

select a.*, exists(select 1 from b where a.id = b.tablea-id) as exists_b
from a

3) 使用子查询表达式 EXISTS 的组合,它在两个查询中是矛盾的,以检查记录是否在表 B 中匹配。然后 UNION ALL 将两个结果合并为一个。

select *, true as exists_b
from a
where exists (
select 1
from b
where a.id = b.tablea-id
)
union all
select *, false as exists_b
from a
where not exists (
select 1
from b
where a.id = b.tablea-id
)

关于mysql - 检查表a是否存在表b中的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50890965/

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