サブクエリー

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

登録NO 名前 メールアドレス 削除フラグ
1 A a@example.jp 0
2 B 0
3 C c@example.jp 1
4 D d@example.jp 0
5 E e@example.jp 1
6 F 0
7 A a@example.jp 0
8 C c@example.jp 0
9 G g@example.jp 1
10 A a@example.jp 1


A

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

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

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