这是一个简单的问题,我怎样才能从表中删除第一行而不必给予搜索条件。通常是:
c.execute('DELETE FROM name_table WHERE tada=?', (tadida,))
我只想删除第一行。没有WHERE部分。原因是我想创建一个FIFO表(或堆栈),从底部添加,从顶部删除。我可以通过跟踪时间和日期或给行一个ID来做到这一点。但我更喜欢描述的方法。谢谢。
iq0todco1#
我只想删除第一行SQL表没有固有的排序,因此没有定义的 * 第一 * 行概念,除非为排序指定了一列(或一组列)。假设您有一个排序列,比如id,您可以使用limit来限制应该删除哪一行:
id
limit
delete from mytable order by id limit 1
这将从表中删除具有最小id的记录。
tzdcorbm2#
除非使用sqlite的自定义版本,否则不能将ORDER BY或LIMIT与DELETE一起使用。如果您的sqlite版本没有使用该选项构建(一些操作系统分发的版本是,一些不是),并且使用该选项构建和安装副本超出了您的适应范围,则可以使用另一种方法,假设使用名为id的列进行排序,id的最小值是最早的记录:
ORDER BY
LIMIT
DELETE
DELETE FROM yourtable WHERE id = (SELECT min(id) FROM yourtable);
2条答案
按热度按时间iq0todco1#
我只想删除第一行
SQL表没有固有的排序,因此没有定义的 * 第一 * 行概念,除非为排序指定了一列(或一组列)。
假设您有一个排序列,比如
id
,您可以使用limit
来限制应该删除哪一行:这将从表中删除具有最小
id
的记录。tzdcorbm2#
除非使用sqlite的自定义版本,否则不能将
ORDER BY
或LIMIT
与DELETE
一起使用。如果您的sqlite版本没有使用该选项构建(一些操作系统分发的版本是,一些不是),并且使用该选项构建和安装副本超出了您的适应范围,则可以使用另一种方法,假设使用名为
id
的列进行排序,id
的最小值是最早的记录: