sql >> データベース >  >> RDS >> Mysql

グループタイプごとに最大のnを書き込むにはどうすればよいですか?ただし、追加の条件がありますか?

    これには、条件をどこに置くか(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を受け取りません(つまり、最も低い値の要素が見つかりません)。




    1. .NETを介したPL/SQLコレクション型パラメータを使用したOracleプロシージャの呼び出し

    2. SQL2つの異なるテーブルの2つの列を比較する方法

    3. MariaDBの順序は間違っていますが、MySQLでは正しい

    4. ScaleGridでPrometheusとGrafanaを使用してMySQLの展開を監視する方法