gpt4 book ai didi

mysql - 从一个表中查找记录,在另一个表的关联记录中,没有具有特定字段值的记录

转载 作者:行者123 更新时间:2023-11-30 22:57:20 24 4
gpt4 key购买 nike

有没有办法在一个查询中找到一个表中的所有记录,而在另一个表中的关联记录中没有具有特定字段值的记录?

为了更好地解释这里是示例:

A表中的一条记录在B表中有多条记录,B表中的每条记录属于A表中的一条记录(N:1)

Table A:
record 1(id: 1, name: happy)
record 2(id: 2, name: sad)

Table B:
record 1(id:1, name: dog, table_a_id: 1)
record 2(id:2, name: cat, table_a_id: 1)
record 3(id:3, name: mouse, table_a_id: 1)
record 4(id:4, name: dog, table_a_id: 2)
record 6(id:6, name: mouse, table_a_id: 2)

我想获取表A中没有的记录,在表B的关联记录中,名称为:cat的记录,在上面的小例子“表A.record 2”中,因为关联“Table A.record 1”的记录有“Table B.record 2”,其名称字段等于 cat。

感谢您的帮助,加布里埃尔

最佳答案

您可以使用左联接并检查联接表中的空值:

SELECT A.* FROM A
LEFT JOIN B ON A.id = B.table_a_id AND B.name = 'cat'
WHERE B.id IS NULL

这将选择 A 中包含 B 中的猫的所有记录,但是当找不到与 A 中的记录匹配的猫时,它将为 B 的所有字段选择 null(这就是左连接所做的)。然后 where 子句只选择那些没有找到匹配 B 的记录,只留下 A 中没有在 B 中找到猫的记录。选择 A.* 确保您不会从 B 中获取绑定(bind)到的列无论如何都是空的。

关于mysql - 从一个表中查找记录,在另一个表的关联记录中,没有具有特定字段值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25715117/

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