PDF(美国Ltr)- 26.8 mb
PDF (A4)- 26.8 mb
タスク:物品ごとに最高値を付けている業者(複数可)を調べます。
この問題は,次のようなサブクエリを使用して解決できます。
WHERE price=(SELECT MAX(s2.price) FROM shop s2 WHERE s1. price)文章= s2.article);+---------+--------+-------+ | 文章| |经销商价格 | +---------+--------+-------+ | 0001 B | | 3.99 | | 0002 | | 10.99 | | 0003 | | 1.69加元| | 0004 | | 19.95 | +---------+--------+-------+
この例では相関サブクエリを使用していますが,これは十分でない場合があります(セクション13.2.10.7 "相関サブクエリ"を参照してください)。この問題を解決する別の方法は,从
句または左连接
で非相関サブクエリを使用することです。
非相関サブクエリ
选择s1。商品,经销商,s1。加入(选择商品,最大(价格)作为从商店集团按商品的价格)作为s2在s1。文章= s2。article AND s1。价格= s2.price;
左连接
:
选择s1。文章,s1.经销商,s1。price FROM shop s1 LEFT JOIN shop s2 ON s1。文章= s2。article AND s1。价格< s2。价格;文章是空的;
左连接
の動作は,s1.price
が最大値を取るときに,それより大きい値のs2.price
は存在せず,s2
行の値は零
になることに基づいています。セクション13.2.9.2 " join構文"を参照してください。