2013-10-24 35 views
0

找出数据库中有多少书不是订单的一部分。在NOT IN中使用子查询

查询:

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

请修改。 'NOT IN'不是一个函数,它是一个操作符(或两个,取决于你如何看待它)。 –

回答

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(*)工作正常,并没有怀疑也许你正在计算非空标题的数量。

0

如果你想使用子查询和NOT IN,那么你应该把它写这样

SELECT COUNT(title) 
FROM book 
WHERE isbn NOT IN (SELECT bookID 
        FROM orders)