[英]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.