2

我需要一些关于这个查询的帮助,我不是 mysql 专家,所以我只是在学习

我只是在做一些关于 sql 的课程,所以我正在阅读手册,但是,我只是不知道如何正确...

我试过的

1 - 我在子查询中使用了 '*',但它似乎不起作用 2 - 我应该将 = 替换为 in - 但剂量 (in) 是什么意思 3 - 还是应该从子查询中删除括号。

mysql手册让我发疯可能是因为我是初学者。

以下查询有什么问题:

select * from order where orderid = (select orderId from orderItems where itemQty > 50)
4

3 回答 3

1

ORDER 是 mysql 的保留字。用刻度转义它:`order`

此处保留字列表:http: //dev.mysql.com/doc/refman/5.5/en/reserved-words.html

此外,您将在子查询中返回一个集合。您可能希望将其限制为 1 或按照 Rahul 的建议执行操作并使用 IN 运算符而不是 = 返回一个组

select * from `order` 
where orderid = (
    select orderId 
    from orderItems 
    where itemQty > 50 
    ORDER_BY orderId 
    LIMIT 1
)
于 2013-09-26T18:19:28.270 回答
1

尝试这个:-

select * from `order` where orderid in (select orderId from orderItems where itemQty > 50)

ORDER是 mysql 的保留字。另外我建议你使用IN而不是=

于 2013-09-26T18:20:46.657 回答
0

使用in.

select * from order where orderid in (select orderId from orderItems where itemQty > 50)

这表示,如果 orderid 在子查询的结果中,则为 true。

于 2013-09-26T18:22:59.073 回答