mysql - Mysql 不查询
问题描述
我有两张这样的桌子。我想做一个查询,即 Select a Dvd only has Indian subtitle。
CREATE TABLE dvd(
`Id` INT NOT NULL,
`Name` VARCHAR(45) NULL,
`Category` VARCHAR(45) NULL,
`Price` INT NOT NULL,
PRIMARY KEY (`Id`));
CREATE TABLE Subtitles(
`Id` INT NOT NULL,
`Language` VARCHAR(45) NULL);
我正在尝试这样做,但此查询选择每张 DVD 都有印度字幕。
SELECT Name FROM DvD JOIN Subtitles
ON Dvd.Id=Subtitles.ID
where Language='Indian' GROUP BY Name HAVING COUNT(*) = 1;
解决方案
该查询不起作用,因为该where
子句在分组之前应用。所以你得到了所有的行Language='Indian'
,然后,每个组只有一行。
一个技巧是检查最大和最小语言是否相同(意味着组中只有一行),并且它们是Indian
. 请注意,where
应删除该子句:
SELECT d.id
FROM dvd d
JOIN subtitles s ON d.id = s.id
GROUP BY id
HAVING MAX(language) = MIN(language) AND MAX(language) = 'Indian'
推荐阅读
- java - 如何使键绑定同时按下
- python - 如何使用 juypter notebook 调用 def 函数
- python - 函数中变量的for循环
- bash - 如何从 SSH 加载与手动登录相同的完整 shell?
- blazor-webassembly - 如何对来自 Blazor webassembly 组件的 javascript CustomEvent 做出反应
- c++ - QGraphicsItem 添加到场景后不可见
- bash - 解决嵌套双引号中的 bash 环境变量的奇怪问题
- react-native - 如何在本机反应中传递地图
- r - macOS Big Sur 下的 Shell PATH to R
- java - System.out.println("") 改变程序的行为