mysql不查询

qltillow  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(239)

我有两张这样的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;
xxhby3vn

xxhby3vn1#

查询不起作用,因为 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'

相关问题