Home > pgsql > SQL覚え書き

SQL覚え書き

結合する相手が0または1行を返す場合は、LEFT JOINのかわりにターゲットリストでのサブクエリーが使える(スカラー副問い合わせ)。但しサブクエリーが複数行を返すとエラーになる。結合条件がプライマリキーな場合だけ使うのが良いかもしれない。

SELECT shain.*
     , busho.busho_id
  FROM shain
       LEFT JOIN busho USING (busho_id);
       |
       V
SELECT shain.*
     ,(SELECT busho_name
         FROM busho
        WHERE shain.busho_id = busho.busho_id);

MAX()のかわりにORDER BY...LIMITが使える場合がある。インデックスがあれば速いかも。但しテーブルが空だった場合、MAX()はNullを返すがORDER BY...LIMITは行を返さない。

SELECT max(score)
  FROM score_table;
       |
       V
SELECT score
  FROM score_table
 ORDER BY score DESC
 LIMIT 1

Writeback:0

Comment Form

writeback message: Ready to post a comment.

TrackBack ping me at
http://www.mono-space.net/blog/pgsql/sql.trackback

Page Top