サブクエリー

Q.以下の「表」というテーブルにて、有効なアカウントを抽出するSQLを作成せよ。但し、有効条件は以下とする。
・削除フラグが0であること。
・メールアドレスが重複している場合,もっとも最後に登録されたもののみ有効とする。但し、メールアドレスが空の場合は重複チェックを行わない。

登録NO 名前 メールアドレス 削除フラグ
1 A [email protected] 0
2 B 0
3 C [email protected] 1
4 D [email protected] 0
5 E [email protected] 1
6 F 0
7 A [email protected] 0
8 C [email protected] 0
9 G [email protected] 1
10 A [email protected] 1


A

SELECT * FROM 表 WHERE 削除フラグ=0 and (登録NO IN (SELECT max(登録NO) FROM 表 WHERE 削除フラグ=0 and メールアドレス <> ” group by メールアドレス) or メールアドレス = ”)

サブクエリーを使わないと一発で書けない例ですねえ…。
重複判定条件がいやらしいw
サブクエリー内の削除フラグはあってもなくても動作には影響ないきはします。
速度には影響あるかもだけど。

カテゴリー: programming パーマリンク