问问题
573 次
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 回答