問題は、テーブル SP から最大数量 (QTY) を持つサプライヤー (S) をどのように表示できるかです。
これは私が思いついたものです:
SELECT sno FROM sp WHERE sno in (SELECT max(QTY) FROM sp WHERE qty);
しかし、空のフィールドしか表示されず、問題が見つかりません。よろしくお願いします。
SELECT a.*
FROM tableA a
INNER JOIN tableB b
ON a.S = b.S
WHERE b.qty = (SELECT max(qty) FROM tableB)
どうですか
SELECT sno FROM sp ORDER BY qty DESC LIMIT 1
そうすれば、QTY にインデックスを付けることができ、完全なテーブル スキャンを実行する必要がなくなります。
そして、結合を使用して、サブセレクトやそのようなコストのかかることを行うことなく、S のデータにアクセスできます。
SELECT s.* FROM sp LEFT JOIN s USING(sno) ORDER BY qty DESC LIMIT 1