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

別のSELECTから返された行数でORDERBYを照会する

    これを行うPostgresの方法:

    SELECT *
    FROM   users u
    LEFT   JOIN (
       SELECT user_id, count(*) AS friends
       FROM   friends
       ) f USING (user_id)
    ORDER  BY f.friends DESC NULLS LAST, user_id  -- as tiebreaker
    
    • キーワードAS テーブルエイリアスの単なるノイズです。ただし、列エイリアスから省略しないでください。 「ASキーワードの省略」に関するマニュアル:

      FROMで 標準とPostgreSQLの両方のアイテムでASが許可されます 予約されていないキーワードであるエイリアスの前に省略されます。ただし、構文があいまいなため、これは出力列名には実用的ではありません

      大胆な強調鉱山。

    • ISNULL() MySQLまたはSQLServerのカスタム拡張です。 PostgresはSQL標準関数COALESCE()を使用します 。しかし、ここでも必要ありません。 NULLS LASTを使用します 代わりに、より高速でクリーンな句。参照:

      • PostgreSQLは日時ascで並べ替え、最初はnullですか?
    • 複数のユーザーが同じ数の友達を持つことになります。これらのピアは任意にソートされます。繰り返し実行すると、異なるソート順が生成される可能性がありますが、これは通常は望ましくありません。 ORDER BYに式を追加します タイブレーカーとして。最終的に、主キーは残りのあいまいさを解決します。

    • 2つのテーブルが同じ列名を共有している場合user_id (必要に応じて)構文ショートカットUSINGを使用できます join句で。もう1つの標準SQL機能。ウェルカム副作用:user_id SELECT *の出力に1回だけリストされます 、ONで結合する場合とは対照的に 。多くのクライアントは、出力で重複する列名を受け入れません。



    1. UPPER()–PostgreSQLで大文字に変換

    2. PAASサービスモデルはどのように機能しますか?

    3. WordPressのインストール方法:サーバーソフトウェア

    4. SqlBulkCopyの推奨バッチサイズはどれくらいですか?