sql-server 如何从数据库中获取最新更新的内容?

nhhxz33t  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(140)

我的数据库表如下所示:
| 标识符|文章ID|创建日期|修改日期|内容物|
| - -|- -|- -|- -|- -|
| 一个|一百四十五|2021年1月1日|2021年1月1日|废话|
| 2个|一百四十五|2021年1月1日|2021年1月2日|废话|
| 三个|一百四十五|2021年1月1日|二〇二一年一月三日|废话|
| 四个|一百四十六|2021年10月2日|2021年10月2日|废话|
| 五个|一百四十七|二〇二一年四月五日|二〇二一年四月五日|废话|
| 六个|一百四十七|二〇二一年四月五日|二〇二一年四月七日|废话|
因此,如果一个内容被更新并再次保存,那么它将再次保存在数据库中,修改日期和相同的articleId。我试图得到的是所有内容(最新的,不重复),其中包含单词“blabla”。
我编写了以下查询

SELECT * FROM db where content like '%blabla%' group by articleId

但是这不管用,你知道吗?

wwwo4jvm

wwwo4jvm1#

我相信这样的东西可以工作。从我的记忆回忆。
MAX()可用于sql日期类型。
查询将搜索包含“一些”内容的每篇文章的最大日期。

SELECT *
FROM table t1
WHERE t1.modifiedDate = (
  SELECT MAX(modifiedDate) 
  FROM table
  WHERE articleId = t1.articleId
  AND content LIKE CONCAT("%", "search_value or bind", "%")
);
lf5gs5x2

lf5gs5x22#

使用ROW_NUMBER()和CTE建立自订顺序:

WITH Ordered_db AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY articleId ORDER BY modifiedDate DESC) AS RowNumber
    FROM db
    WHERE content LIKE '%blabla%'
)
SELECT *
FROM Ordered_db
WHERE Ordered_db.RowNumber = 1

相关问题