SQLite-分别保留2个表中最新的10行

SQLite-分别保留2个表中最新的10行,sql,sqlite,Sql,Sqlite,我正在努力实现以下目标: 我有一个数据库,其中有两个表,分别命名为TableA和TableB 表A中有一个名为someID的列 表B中有一个名为tableA_ID的列,该列与tableA.someID字段相关 我想保留表A最后插入的10行,删除其余的,并对表B执行相同的操作,删除所有内容,但与表A最近10行中未删除的内容相匹配的10行除外 我曾读到,这可以通过内部联接来完成,但我对SQL几乎没有经验,而且我在这方面很难做到 我尝试了以下操作,但无法在从表A中删除的同时从表B中删除 从表A中删除,

我正在努力实现以下目标:

我有一个数据库,其中有两个表,分别命名为TableA和TableB

表A中有一个名为someID的列

表B中有一个名为tableA_ID的列,该列与tableA.someID字段相关

我想保留表A最后插入的10行,删除其余的,并对表B执行相同的操作,删除所有内容,但与表A最近10行中未删除的内容相匹配的10行除外

我曾读到,这可以通过内部联接来完成,但我对SQL几乎没有经验,而且我在这方面很难做到

我尝试了以下操作,但无法在从表A中删除的同时从表B中删除

从表A中删除,其中id不在表A中选择id按id顺序描述限制10

有什么提示吗


谢谢假定您的身份证正常

SELECT someID FROM TableA ORDER BY someID DESC LIMIT 10
将为您提供最新的10行。然后可以将其用作子查询:

DELETE FROM TableA WHERE someID NOT IN
(
    SELECT someID FROM TableA ORDER BY someID DESC LIMIT 10
);
DELETE FROM TableB WHERE tableA_ID NOT IN
(
    SELECT someID FROM TableA
);
如果希望两次删除同时发生,则必须在事务中执行它们。如何做到这一点取决于您使用的RDBMS


将来,我强烈建议在TableB上引用TableA中的someID列进行外键约束。如果您这样做,您应该能够删除级联约束。

谢谢,我将尝试此项。我对SQL数据库并没有真正的经验,然后这种糟糕的体系结构就出现了:用您正在使用的数据库标记您的问题。