Mysql SQL查询,主键到多个外键
我遇到了一个无法解决的问题。 我一直在看一些其他的帖子,但大多数帖子要么太复杂,让我无法理解/使用,要么没有处理相同的问题 首先是表格: 人Mysql SQL查询,主键到多个外键,mysql,foreign-keys,Mysql,Foreign Keys,我遇到了一个无法解决的问题。 我一直在看一些其他的帖子,但大多数帖子要么太复杂,让我无法理解/使用,要么没有处理相同的问题 首先是表格: 人 id | amt ============= 1 | 5 2 | 26 3 | 3 目标 我想要的是: 我需要所有没有目标AAA的人员ID。 目前,一个人在目标表中只能有1到3个目标 我的选择: SELECT Person.id, Person.amt FROM Person
id | amt
=============
1 | 5
2 | 26
3 | 3
目标
我想要的是:
我需要所有没有目标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"
)
还要改变这一点:
AND Goal.goals != "AAA"
到
还要改变这一点:
AND Goal.goals != "AAA"
到
您的子选择将筛选所有与AAA不匹配的行。这包括DDD。你可以用
SELECT * FROM Person p
WHERE NOT EXISTS (SELECT g.id FROM Goal g WHERE g.goals="AAA" AND g.idPerson=p.id)
您的子选择将筛选所有与AAA不匹配的行。这包括DDD。你可以用
SELECT * FROM Person p
WHERE NOT EXISTS (SELECT g.id FROM Goal g WHERE g.goals="AAA" AND g.idPerson=p.id)
您不需要将其关联起来,而是希望使用NOT IN:
您不需要将其关联起来,而是希望使用NOT IN: 你可能在寻找一个不存在的东西
SELECT Person.id, Person.amt
FROM Person
WHERE amt < 10
AND NOT EXISTS
(
SELECT 1
FROM Goal
WHERE idperson = person.id AND goals = "AAA"
)
你可能在寻找一个不存在的东西
SELECT Person.id, Person.amt
FROM Person
WHERE amt < 10
AND NOT EXISTS
(
SELECT 1
FROM Goal
WHERE idperson = person.id AND goals = "AAA"
)
您需要使用NOT IN而不是IN,例如:
您需要使用NOT IN而不是IN,例如:
很抱歉,我应该说我使用的是phpmyadmin,当我尝试使用SQL时,我获取的消息不存在无法识别的关键字。我确实更新了phpmyadmin,现在我也可以使用NOT EXISTS,但当我想筛选多个目标时,遇到了另一个问题,就像我在主帖子的编辑中所述。@SergSam,使用IN运算符,然后在'AAA'、'BBB'、'CCC'中选择目标,现在使用IN运算符,谢谢@Rahul!很抱歉,我应该说我使用的是phpmyadmin,当我尝试使用SQL时,我获取的消息不存在无法识别的关键字。我确实更新了phpmyadmin,现在我也可以使用NOT EXISTS,但当我想筛选多个目标时,遇到了另一个问题,就像我在主帖子的编辑中所述。@SergSam,使用IN运算符,然后在'AAA'、'BBB'、'CCC'中选择目标,现在使用IN运算符,谢谢@Rahul!谢谢,如果我使用一个标准,这是有效的,但是当我尝试选择所有不“AAA”和不“BBB”的地方时,它将不再起作用。谢谢,如果我使用一个标准,这是有效的,但是当我尝试选择所有不“AAA”和不“BBB”的地方时,它将不再起作用。
SELECT Person.id, Person.amt
FROM Person
WHERE amt < 10
AND NOT EXISTS
(
SELECT 1
FROM Goal
WHERE idperson = person.id AND goals = "AAA"
)
SELECT *
FROM Person
WHERE amt < 10
AND Person.id NOT IN (
SELECT idPerson FROM Goal WHERE goals = 'AAA'
);