我有一个非常简单的表格,我保持玩家禁令。只有两列(实际上不是,但为了简单起见) - 一个玩家的唯一ID(uid)和禁止过期日期(expiredate)
我不想在表中保留过期禁令,因此所有禁止过期的禁令< currentdate需要删除。
要查看播放器是否被禁止,我会使用他的uid和当前日期查询此表,以查看是否有任何条目。如果有 - 我们确定玩家被禁止。
所以我需要运行两个查询。一个可以取消禁令,另一个可以清理冗余禁令表。
我想知道是否可以将这些查询合并为一个。如果条目仍然相关,请选择并返回该条目,并删除该条目,如果不是则返回任何内容。
在单个选择查询中有没有很好的方法可以做到这一点?
编辑:
为了澄清,我实际上在表格中有一些其他信息,例如禁令原因,禁止日期等,所以我需要返回行以及删除不相关的条目。
答案 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)
这是你想要做的吗?