我正在使用GalaXQL学习SQL,但找不出以下问题:
构建一个从行星返回starids的查询。对于列表中的每一个starid ( x ),应该选择starids (X):-应该存在一个有三倍x的星,但不应该存在一个有starid x的行星。只使用行星表中的starid:s。
除了使用UNION、UNION、INTERSECT之外,还有什么查询可以完成这个任务呢?请在你的回答中消化这一点,因为我是初学者。提前谢谢你!
以下是数据库模式:
CREATE TABLE stars (starid INTEGER PRIMARY KEY,
name TEXT,
x DOUBLE NOT NULL,
y DOUBLE NOT NULL,
z DOUBLE NOT NULL,
class INTEGER NOT NULL,
intensity DOUBLE NOT NULL);
CREATE TABLE hilight (starid INTEGER UNIQUE);
CREATE TABLE planets (planetid INTEGER PRIMARY KEY,
starid INTEGER NOT NULL,
orbitdistance DOUBLE NOT NULL,
name TEXT,
color INTEGER NOT NULL,
radius DOUBLE NOT NULL);
CREATE TABLE moons (moonid INTEGER PRIMARY KEY,
planetid INTEGER NOT NULL,
orbitdistance DOUBLE NOT NULL,
name TEXT,
color INTEGER NOT NULL,
radius DOUBLE NOT NULL);
CREATE INDEX planets_starid ON planets (starid);
CREATE INDEX moons_planetid ON moons (planetid);以下是我的疑问:
SELECT planets.starid
FROM planets
UNION
SELECT starid*3 FROM planets
EXCEPT
SELECT starid*2 FROM planets发布于 2014-12-01 06:43:34

有关更多详细信息,请检查链接这对我有帮助
发布于 2021-06-09 10:52:15
请参阅下面所有操作符的示例查询。
注意:MINUS不支持减号运算符。除了Server中的操作符外,它还等同于。
SELECT name FROM Employee /* Fetch the union of queries */
UNION
SELECT name FROM Contacts;
SELECT name FROM Employee /* Fetch the union of queries with duplicates*/
UNION ALL
SELECT name FROM Contacts;
SELECT name FROM Employee /* Fetch names from Employee */
EXCEPT /* that aren't present in contacts */
SELECT name FROM Contacts;
SELECT name FROM Employee /* Fetch names from Employee */
INTERSECT /* that are present in contacts as well */
SELECT name FROM Contacts;https://stackoverflow.com/questions/23966848
复制相似问题