Mysql查询小修复

时间:2013-09-26 18:17:49

标签: mysql

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

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

我尝试了什么

1 - 我在子查询中使用了'*',但似乎无效 2 - 我应该用 - 替换= - 但是剂量(in)是什么意思 3 - 或者你应该从子查询中删除括号。

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

以下查询出了什么问题:

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

3 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:1)

试试这个: -

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

ORDER是一个mysql保留字。另外,我建议您使用IN代替=

答案 2 :(得分:0)

使用in

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

这就是说,如果orderid在子查询的结果中,则为true。