これには、条件をどこに置くか(where
)に注意が必要です。 またはon
?)だまされないように:-)t1の条件をwhere
に追加する必要があります 句とt2からon
条項:
SELECT t1.type, t1.name, t1.value
FROM mytable t1
LEFT JOIN mytable t2 ON t1.type = t2.type AND t1.value > t2.value
AND t2.popularity > 3 /* here */
WHERE t2.value IS NULL
AND t1.popularity > 3 /* and here */
テストはしていませんが、動作するはずです。
説明を試みてください: where句の条件は、値が最も低い潜在的な要素と見なす要素に影響します。一方、on
の条件 句はリンケージに影響します:それを比較したい他の要素とは何ですか?比較するグループを定義します。技術的には、t2。*がNULLになる時期に影響を与えます。 where
にt2.popularityの条件を指定しましたか 代わりに、最も低い要素の人気が低いグループでは、NULLを受け取りません(つまり、最も低い値の要素が見つかりません)。