gpt4 book ai didi

mysql - 如何连接表以包含与另一个表中的值完全匹配的结果,或者根本不包含结果?

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

我有两张 table 。我要么需要与第二个表中的特定值关联的结果,要么根本不存在。我怎样才能做到这一点?

TableA              TableB
id name table_a_id value
---------------- ---------------------
1 alpha 1 1
2 beta 2 0
3 gamma 3 1
4 delta 3 1
5 epsilon

期望的输出:

TableATableB = 0TableA 的所有行与 TableB 完全没有关联.

2     beta          -- associated with 0 value on TableB
4 delta -- not in TableB at all
5 epsilon -- not in TableB at all

如何在一次查询中获得这些结果?

这里有一个低效的方法来完成这个:

SELECT *
FROM TableA a,TableB b
WHERE
a.id = b.table_a_id
AND a.id NOT IN (
SELECT table_a_id
FROM TableB
WHERE value != 0
);

你有什么建议?

最佳答案

我会选择 UNION 并建议使用 EXPLAIN 来检查性能。

SELECT DISTINCT
a.*
FROM
TableA a
INNER JOIN
TableB b
ON
a.id = b.table_a_id
AND
b.value = 0

UNION ALL -- There can't be duplicates

SELECT
a.*
FROM
TableA a
LEFT JOIN
TableB b
ON
a.id = b.table_a_id
WHERE
b.table_a_id IS NULL;

关于mysql - 如何连接表以包含与另一个表中的值完全匹配的结果,或者根本不包含结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25092134/

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