根据条件

时间:2015-08-21 12:40:38

标签: sql sqlite select sql-delete

我有一个非常简单的表格,我保持玩家禁令。只有两列(实际上不是,但为了简单起见) - 一个玩家的唯一ID(uid)和禁止过期日期(expiredate)

我不想在表中保留过期禁令,因此所有禁止过期的禁令< currentdate需要删除。

要查看播放器是否被禁止,我会使用他的uid和当前日期查询此表,以查看是否有任何条目。如果有 - 我们确定玩家被禁止。

所以我需要运行两个查询。一个可以取消禁令,另一个可以清理冗余禁令表。

我想知道是否可以将这些查询合并为一个。如果条目仍然相关,请选择并返回该条目,并删除该条目,如果不是则返回任何内容。

在单个选择查询中有没有很好的方法可以做到这一点?

编辑:

为了澄清,我实际上在表格中有一些其他信息,例如禁令原因,禁止日期等,所以我需要返回行以及删除不相关的条目。

3 个答案:

答案 0 :(得分:3)

不幸的是你在select语句中没有删除语句......我找到了link from sqlite docos供你参考。

Select语句仅用于检索数据。虽然可以在select语句的子查询中使用delete,但它仍可用于检索数据。

在你的情况下,你必须以分开的方式执行这两个语句。

答案 1 :(得分:0)

DELETE FROM TableName
WHERE expiredate < CURDATE();

答案 2 :(得分:0)

delete from player_bans p
where exists (
select 1 from player_bans 
where p.uid = uid
and expire_date < current_date)

这是你想要做的吗?