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

これを試して:-

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

ORDERmysql の予約語です。INまた、代わりに使用することをお勧めします=

于 2013-09-26T18:20:46.657 に答える
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 に答える
0

を使用しinます。

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

これは、サブクエリの結果に orderid が含まれている場合は true です。

于 2013-09-26T18:22:59.073 に答える