按两个表格获取最近日期的记录

时间:2016-01-13 20:13:34

标签: sql sql-server

我有两个SQL表。每个都有一个ID与其他列和日期。

有没有办法可以在一个按日期排序的查询中从这两个表中获取结果?例如,结果,我可能有一个来自表1的记录,后面是表2中的两个记录,然后是表1中的另一个记录,依此类推。我已经尝试了下面的代码,但我认为我没有走上正确的道路。

感谢您的帮助。

rezultat

谢谢你们。

2 个答案:

答案 0 :(得分:1)

您要使用的是UNION运算符,尽管每个表的列列表(或至少是您选择的列)必须匹配。您需要确保在UNION之后进行排序。

简化示例:

SELECT
    col1,
    col2,
    some_date
FROM
(
    SELECT
        col1,
        col2,
        some_date
    FROM
        Table1
    UNION ALL
    SELECT
        col1,
        col2,
        some_date
    FROM
        Table2
)
ORDER BY
    some_date

答案 1 :(得分:1)

看看union all。您需要确保结果列的数据类型相同。

select a.id "id", null "message", a.cityname "city", a.countryname "country", a.street "street", a.datecreated "dt"
from dbo.appraisal a
union all
select s.id, s.message, null, null, null, s.datecreated
from dbo.sub_appraisal s
order by 6

但是,我怀疑您的sub_appraisal表缺少将其链接到appraisal表的ID。理想情况下,您可以按照正确的顺序连接两个表,以便准确地获取数据,因为您不能保证在sub_appraisal记录之后和另一个{{1}之前直接创建appraisal个记录记录已创建。如果发生这种情况,您的查询将为您提供您可能不期望的结果。