gpt4 book ai didi

mysql - SQL查询,主键转多个外键

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

我遇到了无法解决的问题。我一直在查看其他一些帖子,但其中大部分要么对我来说太复杂,无法理解/使用,要么不处理相同的问题。

首先是表格:

人物

   id   |   amt
=============
1 | 5
2 | 26
3 | 3

目标

   id   |    idPerson |  goals
===========================
1 | 1 | "AAA"
2 | 1 | "AAA"
4 | 1 | "DDD"
5 | 2 | "CCC"
6 | 2 | "BBB"
7 | 3 | "AAA"

我想要的:我需要所有人员没有目标“AAA”的人员 ID。目前,一个人在表目标中只能有 1 到 3 个目标。

我的选择:

 SELECT Person.id, Person.amt
FROM Person
WHERE amt < 10
AND Person.id IN
(
SELECT Goal.idPerson
FROM Goal
WHERE Person.id = Goal.idPerson
AND Goal.goals != "AAA"
)

如果可能,有人可以向我解释为什么我的 SQL 无法正常工作以及我必须采取哪些不同的措施才能正常工作吗?通过解释,我可以避免将来出现同样的问题。 :)

谢谢。

编辑:我不认为这会造成问题,但是当我不仅过滤“AAA”而且过滤“BBB”时,我会得到“AAA”、“BBB”的结果,甚至一些两者都有。现在在哪里:

 AND Person.id NOT IN 
(
SELECT Goal.idPerson
FROM Goal
WHERE Person.id = Goal.idPerson
AND Goal.goals = 'AAA'
AND Goal.goals = 'BBB'
)

最佳答案

您可能正在寻找 NOT EXISTS 而不是

 SELECT Person.id, Person.amt
FROM Person
WHERE amt < 10
AND NOT EXISTS
(
SELECT 1
FROM Goal
WHERE idperson = person.id AND goals = "AAA"
)

关于mysql - SQL查询,主键转多个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43155051/

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