我简单的数据库与3个表:如何显示在SQL
Galaxy(GalaxyID INTEGER PRIMARY KEY, Name TEXT);
Planet(PlanetID INTEGER PRIMARY KEY, GalaxyID INTEGER, Name TEXT, Population INTEGER);
Continent(ContinentID INTEGER PRIMARY KEY, PlanetID INTEGER,Name TEXT);
INSERT INTO Galaxy VALUES
(1, "MILKY WAY"),
(2, "IC 1101"),
(3, "GN-z11");
INSERT INTO Planet VALUES
(1,1, "Earth", 100000),
(2,1, "Moon", 0),
(3,1, "Saturn", 0),
(4,2, "IC-123", 0),
(5,2, "IC-124", 1),
(6,2, "IC-126", 4),
(7,3, "GN-24", 1),
(8,3, "GN-26", 1),
(9,3, "GN-28", 4);
INSERT INTO Continent VALUES
(1,1, "Europe"),
(2,4, "UnnamedContinent1"),
(3,4, "UnnamedContinent2");
我想选择银河其不具有大陆的一切:
SELECT Galaxy.Name, Planet.name
FROM Galaxy
LEFT OUTER JOIN Planet, Continent
ON Continent.PlanetID = Planet.PlanetID AND Galaxy.GalaxyID = Planet.GalaxyID
GROUP BY Galaxy.Name
HAVING COUNT(ContinentID) IS NULL
此查询不会工作,但如果如果显示NULL记录,例如:GN-z11 NULL
'COUNT(列)'不会'NULL'回报,否则就当列中只有'NULL'的记录时返回0。您可以使用where条件来实现您的目标:'WHERE NOT EXISTS(SELECT * FROM Continent WHERE Planet.PlanetID = Continent.PlanetID)' – Pred