繁体   English   中英

MySQL内部联接使用

[英]MySQL INNER JOIN USE

我有两个表:

+-----------------------+
| Tables_in_my_database |
+-----------------------+
| orders                | 
| orderTaken            | 
+-----------------------+

在订单中,有一些属性,例如orderIdorderName
在orderTaken中,有一些属性,如userIdorderIdorderStatus

基本上,我项目的机制运行如下:
具有唯一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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM