gpt4 book ai didi

mysql - 一对多关联 SELECT 记录 WHERE 两个或多个条件

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

我有两个表:

+-----+------------+---------------+
| id | name | address |
+-----+------------+---------------+
| 1 | John Smith | 123 North St. |
| 2 | Joe Dirt | 456 South St. |
+-----+------------+---------------+

person_fields

+-----+------------+-----------+-------+
| id | type | person_id | value |
+-----+------------+-----------+-------+
| 1 | isHappy | 1 | 1 |
| 2 | hasFriends | 1 | 1 |
| 3 | hasFriends | 2 | 1 |

我想从 person 中选择所有 isHappy AND hasFriends 为 TRUE 的人。这是我尝试过的:

SELECT person.*
FROM person
INNER JOIN person_fields
ON person.id = person_fields.person_id
WHERE
(person_fields.type = 'isHappy' AND person_fields.value IS TRUE)
AND
(person_fields.type = 'hasFriends' AND person_fields.value IS TRUE)

不幸的是,这不起作用,因为您不能在 person_fields 中有一条包含 type = 'isHappy'type = 'hasFriends' 的记录。我不能 OR 这两个条件,因为那样会同时返回 John Smith 和 Joe Dirt,但我只想要 John Smith,因为他是唯一一个快乐并且同时拥有 friend 的人。

有什么建议吗?提前致谢!

最佳答案

标准解决方案如下所示:

SELECT person_id 
FROM person_fields
WHERE type IN ('ishappy','hasfriends')
GROUP
BY person_id
HAVING COUNT(1) = 2;

...其中“2”等于 IN() 中参数的数量

请注意,这假设 (person_id,type) 是唯一的

关于mysql - 一对多关联 SELECT 记录 WHERE 两个或多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525776/

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