SQL Inner Join返回奇怪的结果

时间:2014-05-16 16:30:06

标签: mysql sql database sqlite

好的,我的数据库中有两个表。我有一本表书,有(id,title,author),我有另一个表订单,有(id,bookid,authorid,fromdate,todate)。

我只是为了获得订购/预订的所有书籍。意思是,书籍表中的所有书籍,在订单表中的位置应该没有orders.bookid和任何书籍一样.id

所以,我已经提出了这个问题:

SELECT books.title, books.author 
FROM books 
INNER JOIN orders 
ON orders.bookid ORDER <> books.id

看起来我找到了它,看起来与之合作:

SELECT * FROM books LEFT JOIN orders ON books.id = orders.bookid WHERE orders.bookid IS NULL

您怎么看?

所以,我的示例中有6本书,其中有ids 1-6,我在订单表中有两个订单,其中bookid(s)是3和4.现在,如果我运行我的查询,它会告诉我1-2和5-6(两次)的书籍,以及书籍3和4一次。

我不知道我到底做错了什么,但无论如何,我有点卡住了。

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

SELECT b.title, b.author 
FROM books b
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.bookid = b.id);

答案 1 :(得分:-2)

为什么不给你的表别名并加入id列?

SELECT B.TITLE, B.AUTHOR FROM BOOKS B INNER JOIN ORDERS O ON B.ID = O.BOOKID