首页 > 解决方案 > 形成一个sql查询

问题描述

我真的希望你能帮助我形成一个可以执行以下操作的 sql 查询:

我有 2 张桌子

Pages 
(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Key] [nvarchar](450) NULL,
    [CreatedAt] [datetimeoffset](7) NOT NULL,
    [Title] [nvarchar](max) NULL
)

Contents 
(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [PageId] [int] NULL,
    [Key] [nvarchar](450) NULL,
    [Version] [int] NOT NULL,
    [Text] [nvarchar](max) NULL
)

Id |   Key   | CreatedAt | Title
---+---------+-----------+-------
 1 | "page1" | 20200101  | ....


Id | PageId |   Key  | Version | Text 
---+--------+--------+---------+------
 1 |    1   | "key1" |    1    | .....
 2 |    1   | "key1" |    2    | .....
 3 |    1   | "key2" |    1    | .....
 4 |    1   | "key2" |    2    | .....
 5 |    1   | "key3" |    1    | .....

我有兴趣获取页面以及与PageId页面匹配的每个内容的最新版本。

** 更新 **

Key 是传递来获取结果的键

Select * from Pages where [Key] = 'the key of the page'

期望的结果是这样的

Page.Id | Page.Key | Page.CreatedAt | Page.Title | Content.Id | Content.PageId | Content.Key | Content.Version | Content.Text
---------------------------------------------------------------------------------------------------------------------------------
   1    |  "Page1" |    20200101    |   ......   |     2      |        1       |    "Key1"     |    2     | ......
   1    |  "Page1" |    20200101    |   ......   |     4      |        1       |    "Key2"     |    2     | ......
   1    |  "Page1" |    20200101    |   ......   |     5      |        1       |    "Key3"     |    1     | ......

标签: sqltsql

解决方案


我们需要更多信息。要获得最新结果,您可以对输出进行排序并限制结果数量,如下所示:

SELECT PageID FROM Contents WHERE PageID=$pageid ORDER BY id DESC LIMIT 3

推荐阅读