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

ORDER BYはDISTINCTの前または後に適用されますか?

    理解すべき2つのこと:

    1. 一般的に、結果セットは順不同 です。 ORDER BYを指定しない限り 句; 非厳密な順序 を指定する範囲で (つまり、ORDER BY 一意でない列の場合)、その順序で等しいレコードが結果セット内に表示される順序は定義されていません。

      問題の根本である、このような非厳密な順序を指定している可能性があります。ORDER BYを指定して、順序が厳密であることを確認してください。 結果セット内の最終的な位置を気にする各レコードを一意に識別するのに十分な列のセットに対して。

    2. DISTINCT GROUP BYを使用できます 、これにより、結果はグループ化された列によって順序付けられます。つまり、SELECT DISTINCT a, b, c FROM t ORDER BY a, b, cのように見える結果セットを生成します 適用された。繰り返しになりますが、ニーズを満たすために十分に厳密な順序を指定すると、この効果が無効になります。

    更新後、上記の私のポイント2を念頭に置いて、結果をグループ化してDISTINCTを達成する効果は明ら​​かです。 グループ化されていない列p.idで並べ替えることができなくなります;代わりに、次のようにします。

    SELECT   t.*
    FROM     Threads t INNER JOIN Posts p ON t.id = p.threadid
    GROUP BY t.id
    ORDER BY MAX(p.id) DESC
    


    1. 別のテーブルに存在しないレコードを1つのテーブルから検索します

    2. mysqlは、個別の行をコンマ区切りのリスト列に選択します

    3. mysqlは通貨としてintを選択しますか、それともintを通貨形式に変換しますか?

    4. mysql-特殊文字%(パーセント)および_(アンダースコア)を使用したクエリ検索の処理方法