gpt4 book ai didi

mysql - 如何从一对多关系的 "many"表中选择具有两个特定子 ID 的父 ID?

转载 作者:行者123 更新时间:2023-11-29 04:49:23 24 4
gpt4 key购买 nike

假设我有一张表格,其中列出了各种玩具及其使用的电池类型:

toy_id   battery_id    battery_qty
1 3 1
2 2 4
2 3 1
3 1 1

我想构建一个查询,告诉我哪些玩具可以使用 2 型和 3 型电池(但也可能使用其他类型)。在上面的示例中,它是 toy_id 2。

我该如何编写这样的查询?

这是我到目前为止的内容,但看起来很乱:

SELECT t1.toy_id,
t1.battery_id b1, t2.battery_id b2,
t1.battery_qty qty1, t2.battery_qty qty2
FROM toys t1
LEFT JOIN toys t2
ON t1.toy_id = t2.toy_id
WHERE t1.battery_id = 2
AND t2.battery_id = 3
HAVING q1 > 0
AND q2 > 0
ORDER BY toy_id ASC;

结果看起来是正确的,但我很好奇我是否遗漏了什么。

最佳答案

我觉得join在这里不是很需要。你只需要计算记录的实例数,它等于你搜索的条件数。

SELECT  toy_ID
FROM toys
WHERE battery_ID IN (2,3)
GROUP BY toy_ID
HAVING COUNT(*) = 2

但如果没有为每个 toy_id 在 battery_id 上定义唯一约束,则需要在 HAVING 子句上使用 DISTINCT

SELECT  toy_ID
FROM toys
WHERE battery_ID IN (2,3)
GROUP BY toy_ID
HAVING COUNT(DISTINCT battery_ID) = 2

关于mysql - 如何从一对多关系的 "many"表中选择具有两个特定子 ID 的父 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617589/

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