我有一个新闻数据库表,里面有两种文章:社交和官方(互斥)。
我想要做的是将表格中的社交行数减少到特定数字,同时单独留下官方新闻文章。
这是我到目前为止所提出的:
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个社交行(因为它也会计算官方行)。
答案 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)