ホームページ >バックエンド開発 >PHPチュートリアル >サブクエリが混乱している場所、

サブクエリが混乱している場所、

WBOY
WBOYオリジナル
2016-06-23 14:14:26962ブラウズ

この投稿は u010572351 によって最終編集されました: 2013-06-28 17:14:25



select Goods_id,cat_id, Goods_name from Goods where Goods_id=
(select max(goods_id) from Goods)

問題ありませんステートメントを使用すると、正しい結果が返されます。しかし:

それはおそらく次のことを意味します: 製品テーブルに追加された最後の製品情報をクエリします (goods_id が最大です)、
考え方は理解できますが、where 条件の背後にある条件値は最大値を返すにもかかわらず、select ステートメントです。 、それは、 select ステートメントは int ではなく結果セットである必要があります。 Goods_id とどのように比較できますか?意味不明。



ディスカッションに返信(解決策)

結果セットに結果が 1 つある場合は、= 記号を使用できます
結果が複数ある場合は、in を使用することが一般的です。自分のニーズに合わせて、これは基本的に、サブクエリの結果が何であるか (単一または複数) を判断し、適切な演算子を選択できます

つまり、結果セットには結果が 1 つしかないため、これで問題ありません

は結果セット内の 1 つの結果であれば問題ありません = 記号を使用します
複数の結果がある場合は、多くの場合 in を使用します。一般的に言えば、サブクエリの結果が何であるかを基本的に判断できるように、自分の必要に応じて記述します。 (単一または複数) を選択し、適切な演算子を選択します

つまり、結果セットには結果が 1 つしかないため、これで問題ありません

これは次のようなものです、ありがとう!

サブクエリの結果は、別のクエリの条件として使用できます。クエリ結果が 1 つしかない場合は、 =

を使用できます。

はい、select max(goods_id) from Goods) はレコードセット
と Goods_id=( select max (goods_id) from Goods)

の Goods_id もレコードセットです (各行に 1 つあるため)

もちろん、比較することもできます

さて、こんなクエリも書きます。 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。