2012-04-13 93 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