Последний создал 10 записей из всех 3 таблиц - PullRequest
0 голосов
/ 22 июня 2011

у меня 3 стола

Table1

Primary_key  int
Forign_key  int
PostId
CreatedDate Datetime

Table2

Primary_key int
Forign_key int
LocationId
CreatedDate Datetime

Таблица3

Primary_key int
Forign_key int
UserId
OrganisationId
CreatedDate Datetime

Как выбрать последние созданные 10 записей из всех 3 таблиц. Обратите внимание, что 3 таблицы имеют разную структуру

sql server 2005

1 Ответ

2 голосов
/ 22 июня 2011

Если вы хотите "последние 10 на таблицу"

SELECT
    *
FROM
    (
    SELECT
        Primary_key, Forign_key,
        UserId, OrganisationId, NULL AS LocationId, NULL AS PostID,
        CreatedDate, 'table3' AS Source,
        ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS rn
    FROM table3
    UNION ALL
    SELECT
        Primary_key, Forign_key,
        NULL, NULL, LocationId, NULL,
        CreatedDate, 'table2',
        ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS rn
    FROM table2
    UNION ALL
    SELECT
        Primary_key, Forign_key,
        NULL, NULL, NULL, PostID,
        CreatedDate, 'table1',
        ROW_NUMBER() OVER (ORDER BY CreatedDate DESC) AS rn
    FROM table
    ) T
WHERE
   t.rn <= 10

Для "последние 10 на все таблицы"

SELECT TOP 10
    *
FROM
    (
    SELECT
        Primary_key, Forign_key,
        UserId, OrganisationId, NULL AS LocationId, NULL AS PostID,
        CreatedDate, 'table3' AS Source
    FROM table3
    UNION ALL
    SELECT
        Primary_key, Forign_key,
        NULL, NULL, LocationId, NULL,
        CreatedDate, 'table2'
    FROM table2
    UNION ALL
    SELECT
        Primary_key, Forign_key,
        NULL, NULL, NULL, PostID,
        CreatedDate, 'table1'
    FROM table
    ) T
ORDER BY
    CreatedDate DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...