[英]MySQL INNER JOIN USE
我有兩個表:
+-----------------------+
| Tables_in_my_database |
+-----------------------+
| orders |
| orderTaken |
+-----------------------+
在訂單中,有一些屬性,例如orderId
, orderName
。
在orderTaken中,有一些屬性,如userId
, orderId
和orderStatus
。
基本上,我項目的機制運行如下:
具有唯一userId的用戶將能夠從網頁上獲得訂單,其中每個訂單也具有自己的唯一orderId
。 采取之后, orderTaken
表將記錄userId, orderId
並初始設置orderStatus = 1
。
現在,我想選擇一個用戶在orderStatus = 1
采取的訂單,但是我也需要顯示訂單表中的orderName。 我已經學會了內部聯接並編寫了這樣的查詢:
SELECT * FROM orders
WHERE orders.orderId IN
(SELECT orderId FROM orderTaken
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1')
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId
但是,MySQL一直抱怨語法錯誤。 我想我不能以這種方式使用內部聯接? 有人可以糾正我嗎? 謝謝!
SELECT * FROM orders
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1'
您已經太復雜了。 這將起作用。
自從我認為正確之后,我就在userId
保留了引號,但是如果它們的數據類型為INT
,則應將其刪除。
如果您想閱讀JOIN
請參閱以下鏈接
這樣嘗試
SELECT *
FROM (orders INNER JOIN ordersTaken ON orders.orderId = orderTaken.orderId)
WHERE orderId IN
(SELECT orderId
FROM orderTaken
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.