Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 使用union时出现SQL语法错误或缺少数据库(靠近“(”:语法错误)_Sqlite_Syntax_Union - Fatal编程技术网

Sqlite 使用union时出现SQL语法错误或缺少数据库(靠近“(”:语法错误)

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(

我试图使用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 * 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;