SQL删除除了某些行之外的所有行

Add*_*dev 12 sql sqlite

我有一个包含以下列(urls)的表:

 [id,url,visited,timestamp]
 Types:[int,string,int,long]
Run Code Online (Sandbox Code Playgroud)

我想要:

删除除10个未访问的优先级更高的时间戳之外的所有URL(或者如果访问所有访问者,则删除所有URL)

它可以在一个查询中执行此操作吗?无论如何最好的查询(查询)是做什么的?

提前致谢

diz*_*ave 23

我不认为TOP在sqlite中工作 - 需要使用LIMIT

DELETE FROM mytable WHERE id NOT IN ( 
   SELECT id FROM mytable  
   WHERE visited = false 
   ORDER BY timestamp DESC
   LIMIT 10  
   )  
Run Code Online (Sandbox Code Playgroud)


Tra*_*vis 5

DELETE FROM tableofDeletion
WHERE
  -- Delete all items not in the following select
  -- ordered by the timestamp so we can get the top 10 
  id NOT IN (SELECT id 
             FROM tableofDeletion
             WHERE 
                 visited = 0 -- false
             ORDER BY timestamp DESC
             LIMIT 10)
Run Code Online (Sandbox Code Playgroud)

我认为这可以满足您的需求.