简单的DELETE语句不起作用

时间:2010-05-07 19:00:08

标签: sql sqlite sql-delete

我有一张表MRU,有3列。

(VALUE varchar(255); TYPE varchar(20); DT_ADD datetime)

这是一个简单存储条目并记录其记录日期时间的表格。我想要做的是:每当我添加一个超过一定数量的新条目时,删除最旧的条目。

这是我的问题:

delete from MRU 
where type = 'FILENAME' 
ORDER BY DT_ADD limit 1;

错误消息是: SQL错误:接近“ORDER”:语法错误...

查询返回错误。

2 个答案:

答案 0 :(得分:5)

首先,它总是有助于发布尽可能多的信息。在这个特定的例子中,“错误”是无益的,它可能需要2秒才能复制并粘贴给出的实际错误消息,这将为我们提供有用的线索,帮助您。

相反,我去了SQLite的DELETE语句的文档,找到了here,并注意到并且,DELETE没有ORDER BY,除非它是以特定的方式编译的。我认为你的版本不是,虽然没有错误信息很难说。

您可以尝试的是:

delete from MRU where DT_ADD = (
    SELECT MIN(DT_ADD) FROM MRU WHERE type = 'FILENAME'
)

答案 1 :(得分:3)

我不是说你应该这样做,因为它完全不可移植,但如果有迫切需要,这将有效:

在SQLite中,除非在别处定义了整数主键,否则rowid列始终存在。这可以用于:

delete from MRU where rowid = (
    select rowid from MRU order by DT_ADD limit 1
)