0

找出数据库中有多少本书不是订单的一部分。

询问:

SELECT COUNT(title)
FROM book INNER JOIN orders ON book.isbn = orders.bookID
WHERE isbn NOT IN (bookID);
4

2 回答 2

3

我不会NOT IN在这里使用。学习使用JOIN:。

SELECT Count(*)
FROM
   book AS B
   LEFT JOIN orders AS O
      ON B.isbn = O.bookID
WHERE
   O.isbn IS NULL
;

而且(不是 100% 确定这将在 Access 中工作,但我认为是这样):

SELECT Count(*)
FROM
   book AS B
WHERE
   NOT EXISTS (
      SELECT *
      FROM orders AS O
      WHERE B.isbn = O.bookID
   )
;

请注意,您不需要Count(title)Count(*)可以正常工作并且不会怀疑您可能正在尝试计算非 NULL 标题的数量。

于 2013-10-24T17:03:39.687 回答
0

如果你想使用子查询而不是 IN,那么你应该这样写

SELECT COUNT(title)
FROM book 
WHERE isbn NOT IN (SELECT bookID
                   FROM orders)
于 2013-10-24T17:01:10.127 回答