私はこのような「ユーザー」SQLテーブル構造を持っています(IDはランダムに生成され、自動インクリメントされません):
ID name deleted lastActive
3242 Joe 0 20-6-2012 23:14
2234 Dave 0 20-6-2012 23:13
2342 Simon 1 20-6-2012 23:02
9432 Joe 1 20-6-2012 22:58
同じ名前の複数の削除済み (deleted=1) ユーザーが存在する可能性がありますが、同じ名前の削除されていないユーザーは 1 人だけです (したがって、Simon の追加は問題ありませんが、Dave はそうではありません)。1 つの SQL クエリで、同じ名前で削除済み = 0 のレコードが存在しない場合にのみ挿入するにはどうすればよいですか? 私はこのようなものが必要です:
INSERT INTO users (ID, name) VALUES ($id, $name)
WHERE NOT EXISTS (SELECT 1 FROM users WHERE name = $name AND deleted = 0)
しかし、これは正しい構文ではありません。