Sqlite 使用union时出现SQL语法错误或缺少数据库(靠近“(”:语法错误)
我试图使用union,但我得到了这个模糊的语法错误。我可以让每个查询单独运行,但当我尝试使用union时,我得到了这个错误Sqlite 使用union时出现SQL语法错误或缺少数据库(靠近“(”:语法错误),sqlite,syntax,union,Sqlite,Syntax,Union,我试图使用union,但我得到了这个模糊的语法错误。我可以让每个查询单独运行,但当我尝试使用union时,我得到了这个错误 (SELECT s.sname, COUNT(s.sname) AS number FROM sailor s, boat b WHERE b.rating <= s.rating GROUP BY s.sname) UNION (SELECT s.sname, 0 AS number FROM sailor s WHERE NOT EXISTS(
(SELECT s.sname, COUNT(s.sname) AS number
FROM sailor s, boat b
WHERE b.rating <= s.rating
GROUP BY s.sname)
UNION
(SELECT s.sname, 0 AS number
FROM sailor s
WHERE NOT EXISTS(
SELECT * FROM boat b
WHERE s.rating >= b.rating));
在SQL中,只有子查询使用括号。在复合查询中,必须在不使用括号的情况下编写单个选择:
SELECT s.sname, COUNT(s.sname) AS number
FROM sailor s, boat b
WHERE b.rating <= s.rating
GROUP BY s.sname
UNION
SELECT s.sname, 0 AS number
FROM sailor s
WHERE NOT EXISTS(
SELECT * FROM boat b
WHERE s.rating >= b.rating);
在这种特定情况下,您可能只想使用:
SELECT s.sname,
IFNULL(COUNT(b.rating), 0) AS number
FROM sailor AS s
LEFT JOIN boat AS b
ON b.rating <= s.rating;