MySQL INNER加入使用

时间:2017-04-05 00:12:17

标签: mysql select join inner-join

我有两张桌子:

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

在订单中,有orderIdorderName等属性 在订单中,有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一直在抱怨语法错误。我想我不能用这种方式加入内连接?任何人都可以纠正我吗?谢谢!

2 个答案:

答案 0 :(得分:6)

SELECT * FROM orders
INNER JOIN orderTaken ON orders.orderId = orderTaken.orderId
WHERE orderTaken.userId = '8' AND orderTaken.orderStatus = '1'

你已经过度复杂了。这将有效。

我已经为userId留下了引号,因为我认为这是正确的,但如果它们的数据类型为INT,那么您应该删除它们。

如果您想在JOIN上阅读,请参阅这些链接

答案 1 :(得分:0)

试试这个

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')