2012-04-13 88 views
2

我有大约4个不同的表和完全相同的列名。我想要做的是从所有这些表格中按照日期排序(因为日期是他们共享的一列)中的前4个记录。从多个SQL Server表中选择TOP 4记录。使用vb.net

我不断收到错误言论,无论是语法问题或不明确的记录等

本质上我的发言是类似于:

SELECT TOP 4 date, link, anchor, thumb FROM archive1, archive2, archive3, archive4 ORDER BY date DESC 

不言自明的,我是新来的所有这东西。预先感谢您的帮助。

回答

7

您需要制作的所有表的union,然后命令他们取得最后四:

SELECT TOP 4 date, link, anchor, thumb 
FROM 
(
    SELECT date, link, anchor, thumb 
    FROM archive1 
    UNION ALL 
    SELECT date, link, anchor, thumb 
    FROM archive2 
    UNION ALL 
    SELECT date, link, anchor, thumb 
    FROM archive3 
    UNION ALL 
    SELECT date, link, anchor, thumb 
    FROM archive4 
) archive 
ORDER BY date DESC 

当你只需要四个记录您可以通过日期DESC与订单一起加入TOP 4条到每个查询到加快速度。

+0

假设第一个表至少有4条记录,是不是要确保“前4名”总是来自第一个表?没有意思查询其他表格,然后...... – Chains 2012-04-13 22:28:26

+0

@tamago最终排序不在联盟所有列表中。 – 2012-04-13 22:29:24

+0

是的 - 你在排列“前四名” - 我看到了。但是,在你进入前四名之前,你是不是想把这个命令应用到这个联盟组? (以确保所有表格都起作用,而不仅仅是第一个) – Chains 2012-04-13 22:34:18

相关问题