我的SQL运算符有什么问题?

我的SQL运算符有什么问题?,sql,mysql-error-1064,sql-except,Sql,Mysql Error 1064,Sql Except,当我从我的表Stats和Book中选择BookID时,我会得到期望的结果,如下所示: MariaDB [db1]> SELECT BookID From Book WHERE Author = 'AuthorX'; +--------+ | BookID | +--------+ | 1003 | +--------+ MariaDB [db1]> SELECT BookID From Stats WHERE BookID >= 1000; +--------+ | B

当我从我的表Stats和Book中选择BookID时,我会得到期望的结果,如下所示:

MariaDB [db1]> SELECT BookID From Book WHERE Author = 'AuthorX';
+--------+
| BookID |
+--------+
|   1003 |
+--------+


MariaDB [db1]> SELECT BookID From Stats WHERE BookID >= 1000;
+--------+
| BookID |
+--------+
|   1010 |
|   1005 |
|   1003 |
+--------+
但是当我尝试使用EXCEPT操作符时,我得到了一个错误

MariaDB [db1]> (SELECT BookID From Stats WHERE BookID >= 1000)
     -> EXCEPT
     -> (SELECT BookID From Book WHERE Author = 'AuthorX');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'EXCEPT (SELECT BookID From Book WHERE Author = 'AuthorX')' at line 1
我希望得到的结果是:

+--------+
| BookID |
+--------+
|   1010 |
|   1005 |
+--------+
我做错了什么? 我试过带括号和不带括号,但不知道下一步该怎么办

编辑:尝试不在

SELECT BookID From Stats WHERE BookID >= 1000 NOT IN  
(SELECT BookID From Book WHERE Author = 'AuthorX');
屈服

+--------+
| BookID |
+--------+
|      3 |
|   1010 |
|   1005 |
|   1003 |
+--------+
EDIT2:和BookID不适用于除works之外的

还是很想知道为什么除了不

编辑3:来自DoWork的示例

EDIT4:mariab移除支架

三条线看起来更好

SELECT `BookID` From `Stats` WHERE `BookID` >= 1000
EXCEPT
SELECT `BookID` From `Book`  WHERE `Author`  = 'AuthorX'
这和你在工会里看到的差不多

编辑:

或者在旧版本的MariaDB上尝试另一个表达式

或者

或者


然后你在另一条线上的某个地方还有其他问题。。。试着跑步;在它自己的情况下,然后使用;最后,这是唯一的一行…你试过了吗?以防万一,有什么东西是偶然出现的……两者都有吗?同样的结果在except之前运行上半场时,你会得到什么?在@MatBaillie发布的链接中,它说except是在10.3.0中引入的。你用的是什么版本?@kai-dj我很惊讶你竟然没有被执行。它应该是和BookID不在@kai dj中-把和BookID放在它应该在的地方,看看这是否解决了它,目前我甚至不知道这意味着什么,不管它为什么执行。祝你好运,我今天不在家了…除了在MariaDB 10.3.0中介绍的。。这个答案是不是仍然想知道为什么除了没有分开?@MatBailie oh ye-对不起,我的头开始痛了^^
SELECT BookID From Book WHERE Title LIKE 'Harry Potter%'
UNION ALL
SELECT BookID From Book WHERE Author LIKE '%Toklien%'
SELECT BookID
  FROM Book
 WHERE BookID >= 1000
   AND BookID NOT IN (SELECT BookID
                        FROM Book
                       WHERE Author = 'AuthorX'
                     )
SELECT BookID
  FROM Book
 WHERE BookID >= 1000
   AND NOT EXISTS (SELECT *
                     FROM Book  lookup
                    WHERE lookup.Author = 'AuthorX'
                      AND lookup.BookID = Book.BookID
                  )
SELECT
  *
FROM
(
  SELECT BookID FROM Book WHERE BookID >= 1000
)
  high_id
LEFT JOIN
(
  SELECT BookID FROM Book WHERE Author = 'AuthorX'
)
  target_author
    ON target_author.BookID = high_id.BookID
WHERE
  target_author.BookID IS NULL