2 つの列 A と B を持つテーブル T があります。
次に、ARRAY という大きなデータ セットがあります。ARRAY は、A
に表示される可能性のあるデータのリストを保持します。以下のものが必要です
。結果を R として記録します。
2. row.B > 2/3*max_of_B_in_all_rows となるように R から行を取得します。
これを一言で言ってもいいですか?ありがとう!
ユーザー定義変数を使用して Max of B を格納するオプションの 1 つを次に示します。
SELECT A, B
FROM (
SELECT A, B, @maxB:=IF(@maxB>B,@maxB,B) MaxB
FROM TableT
JOIN (SELECT @maxB:=0) T2
WHERE A IN (YourList)
ORDER BY B DESC
LIMIT 10
) T
WHERE B >= (2/3)*MaxB
結合が 1 つだけの 1 つのクエリでの最も簡単なソリューションを次に示します。
SELECT *, MAX(B) AS MAXB
FROM T
INNER JOIN ARRAY
USING(A)
ORDER BY B DESC
HAVING B > MAXB * 2 / 3