gpt4 book ai didi

mysql - 如何检查两个表或子查询结果中存在的属性

转载 作者:行者123 更新时间:2023-11-30 23:43:24 26 4
gpt4 key购买 nike

一家 DVD 公司有很多商店和许多不同类型的 DVD。

DVD 表:

DVD_NAME         | DVD_CODE
"The Matrix" | 123
"The Shining" | 888
"A Scanner Darkly"| 456

存储表:

LOCATION        | STORE_CODE 
"Buenos Aires" | "BA"
"Caracas" | "CA"
"Bogota" | "BO"

目录表:

DVD_CODE    | STORE_CODE   | QUANTITY  
123 | "BO" | 4
888 | "BA" | 2
123 | "CA" | 1
456 | "BA" | 2
123 | "BA" | 2
888 | "BO" | 5

我将如何运行查询

我尝试了以下代码的变体。

SELECT DISTINCT DVD_CODE, DVD_NAME 
FROM DVD
JOIN CATALOGUE USING (DVD_CODE)
JOIN STORE ON USING (STORE_CODE)
WHERE (EXISTS (SELECT DVD_CODE FROM STORE WHERE LOCATION = "Bogota")
AND EXISTS (SELECT DVD_CODE FROM STORE WHERE LOCATION = "Buenos Aires"));

退回的是这两家商店中任何一家的 DVD,但我想退还两家商店中现有的 DVD,如果这有意义的话。

这是我要解决的问题的简化版本。任何帮助将非常感激。请原谅任何格式错误,如果那里有类似的答案,我是 SQL 和堆栈溢出的新手。

谢谢!

最佳答案

如果你想在两个商店都有 DVD,你可以使用聚合和 having:

select c.dvd_code
from catalogue c join
store s
on c.store_code = s.store_code
where s.location in ('Bogota', 'Buenos Aires')
group by c.dvd_code
having count(distinct c.store_code) = 2;

关于mysql - 如何检查两个表或子查询结果中存在的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57556740/

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