2

我有一个带有左连接的 SQL 查询,它工作正常:

SELECT book.* FROM book
LEFT JOIN purchase ON book.book_id = purchase.book_id
WHERE purchase.user_id = 3
ORDER BY purchase.purchase_date

但我还需要购买表中的信息,所以我尝试了:

SELECT purchase.*, book.*
FROM purchase, book
LEFT JOIN purchase ON book.book_id = purchase.book_id
WHERE purchase.user_id = 3
ORDER BY purchase.purchase_date

但它不起作用,我收到以下错误消息:#1066 - Not unique table/alias: 'purchase'

如何修改第一个请求以从购买表中获取数据?

4

2 回答 2

3

您的第一条语句几乎正是您想要的,您只需要在 SELECT 中指定要从购买表返回的字段。

例如

SELECT book.*, purchase.user_id 
FROM book 
    LEFT JOIN purchase ON book.book_id = purchase.book_id 
WHERE purchase.user_id = 3 
ORDER BY purchase.purchase_date

您不需要在 FROM 子句和 JOIN 中列出“购买” - 因为您有,这就是您看到错误的原因。

于 2012-01-05T09:27:42.373 回答
3

您不需要引用purchaseFROM 子句中的表 - 这意味着您既要交叉加入 book 表和 purchase 表,然后又要再次加入 purchase 表。因为有两个purchase表实例,它们需要有唯一的别名——因此是错误的。你可能只需要这个:

SELECT purchase.*, book.*  
  FROM purchase LEFT JOIN purchase ON book.book_id = purchase.book_id 
 WHERE purchase.user_id = 3 ORDER BY purchase.purchase_date;
于 2012-01-05T09:30:01.660 回答