gpt4 book ai didi

sql-server - SQL Server 2008 从多个表中选择前 1 行?

转载 作者:行者123 更新时间:2023-12-02 00:43:48 25 4
gpt4 key购买 nike

我有一个存储文章的表,如示例:

文章表:

ID #CategoryID #Text #Date

所以在页面上我有不同的部分,每个部分都有自己的类别 ID。例如,体育是 1,新闻是 2 等。

现在我希望能够从 x 个类别中加载最新文章。我有一个 SP,它采用 ID 以空格分隔的 nvarchar。

那么现在的问题是,如何从nvarchar中的类别中选择最新插入的文章?

我使用 Erland Sommerskog 的 nvarchar-to-table 将 ID 放入表中 ( http://www.sommarskog.se/arrays-in-sql-2005.html#iter-list-of-integers )

通常我会使用这样的东西从几个类别中选择文章:

SELECT TOP 5 ArticleID, Headline, CategoryID, ShortDescription, DatePublished 
FROM Article
WHERE ArticleState = 3
AND CategoryID IN (SELECT i.number FROM iter_intlist_to_tbl(@Categories) AS i)
ORDER BY DatePublished DESC

但是我如何只从提供的每个类别中选择最后一篇文章呢?

最佳答案

SELECT  a.*
FROM iter_intlist_to_tbl(@Categories) i
OUTER APPLY
(
SELECT TOP 1 *
FROM Article
WHERE CategoryID = i.number
AND ArticleState = 3
ORDER BY
DatePublished DESC
) a

这将从每个类别中选择 ArticleState = 3 的最新文章,如果类别中没有此类文章,则选择 NULL

关于sql-server - SQL Server 2008 从多个表中选择前 1 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1587719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com