形成此SQL语句的正确方法是什么?

时间:2011-10-13 18:23:49

标签: android sqlite

我有一个新闻数据库表,里面有两种文章:社交和官方(互斥)。

我想要做的是将表格中的社交行数减少到特定数字,同时单独留下官方新闻文章。

这是我到目前为止所提出的:

DELETE
FROM News
WHERE _id NOT IN
    (SELECT _id
     FROM News
     WHERE IsOfficialNews=0
     ORDER BY Date DESC LIMIT 20

     UNION SELECT _id
     FROM News
     WHERE IsOfficialNews=1)

但是,我收到一条错误消息,指出ORDER BY clause should come after UNION not before。将ORDER BY移至内部SELECT的末尾会产生LIMIT clause should come after UNION not before

我理解错误信息,但我想知道是否还有其他方法可以完成我想要做的事情。如果我将LIMIT子句移动到内部SELECT的末尾,那么我仍然会在表中留下超过20个社交行(因为它也会计算官方行)。

1 个答案:

答案 0 :(得分:3)

也许这样(见上面的评论):

DELETE FROM News
WHERE IsOfficialNews=0
AND _id NOT IN
(SELECT _id
 FROM News
 WHERE IsOfficialNews=0
 ORDER BY Date DESC LIMIT 20)