我有两张这样的table。我想做一个查询,这是选择一个dvd只有印度字幕。
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;
1条答案
按热度按时间xxhby3vn1#
查询不起作用,因为
where
在分组之前应用子句。所以你得到了所有的排在哪里Language='Indian'
,然后,每个组只有一行。其中一个技巧是检查最大语言和最小语言是否相同(这意味着组中只有一行),以及它们是否相同
Indian
. 请注意where
应删除以下条款: