【发布时间】:2012-06-24 03:02:48
【问题描述】:
我有一个像这样的“用户”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 不行)。只有在一个 SQL 查询中没有同名且已删除 = 0 的记录时,如何才能插入?我需要这样的东西:
INSERT INTO users (ID, name) VALUES ($id, $name)
WHERE NOT EXISTS (SELECT 1 FROM users WHERE name = $name AND deleted = 0)
但这不是正确的语法。
【问题讨论】:
-
为什么不简单地“取消删除”用户名?
-
@MarcB 因为它将是具有不同 ID 的新用户。用户名设置为在 5 分钟不活动后删除,以便其他人可以使用它们,但我无法将它们从表格中完全删除,因为我需要稍后将它们链接起来以生成报告