1
4

1 回答 1

2

拆下括号。

它在三行上看起来“更好”......

SELECT `BookID` From `Stats` WHERE `BookID` >= 1000
EXCEPT
SELECT `BookID` From `Book`  WHERE `Author`  = 'AuthorX'

UNION ALL这和你在...中看到的差不多

SELECT BookID From Book WHERE Title LIKE 'Harry Potter%'
UNION ALL
SELECT BookID From Book WHERE Author LIKE '%Toklien%'


编辑

或者只是尝试另一种表达方式(如果在旧版本的 MariaDB 上) ......

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
于 2018-02-01T16:25:51.027 回答