我的MySQL数据库中有两个表:
DisplayArticles
Id
CategoryId
ArticleId
IsAuto
文章
Id
CategoryId
Title
现在我需要做的是编写MySQL查询,将查询IsAuto设置为true的所有位置,使用指定类别的最新文章(最新的文章位于顶部位置)。
例如,如果我有文章:
...
53 2 'Article that is older'
54 2 'Article about something funny'
55 6 'Article about something else'
56 2 'Article about something interesting'
我的显示文章如下:
1 2 12 false
2 2 42 true
3 2 41 true
4 2 23 false
5 2 25 false
使用参数CategoryId = 2调用的查询应修改DisplayArticles表,如下所示:
1 2 12 false
2 2 56 true
3 2 54 true
4 2 23 false
5 2 25 false
希望这是清楚易懂的。 请帮我写这个查询。
感谢您的回复。
答案 0 :(得分:3)
以下应该这样做。
它的要点就是这样
CategoryID
ArticleID
中的最新Articles
,不包括已分配的ArticleID
WHERE
条款,仅更新IsAuto
等于true
的位置。更新声明
UPDATE DisplayArticles
SET ArticleID = (SELECT MAX(ArticleID)
FROM Articles AS a
WHERE a.CategoryID = CategoryID
AND ArticleID NOT IN (
SELECT ArticleID
FROM DisplayArticles da
WHERE da.CategoryID = CategoryID
)
)
WHERE IsAuto = 'true'