- 2004-10-24
- pgsql
結合する相手が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