2009-12-04 108 views
2

我有一個包含兩個表(Table1和Table2)的數據庫。表1有一列ColumnA和表2有一列ColumnB我想選擇兩個列,在SQL Server 2000中爲兩個不同的表選擇兩列

尋找類似:在表1

ColumnA:

一個

b

c

表2中的列A:

d

Ë

˚F

結果集應該是:

一個d

全稱

預先感謝..

+0

是有之間的實際關係這兩張桌子?即他們是否設置了主鍵和外鍵? – DForck42 2009-12-04 21:15:11

回答

4

我敢肯定,SQL Server 2000支持表瓦爾所以你可以試試這個

DECLARE @TableA TABLE(
     ID INT IDENTITY(1,1), 
     Val VARCHAR(50) 
) 

INSERT INTO @TableA (Val) SELECT ColumnA FROM Table1 

DECLARE @TableB TABLE(
     ID INT IDENTITY(1,1), 
     Val VARCHAR(50) 
) 

INSERT INTO @TableB (Val) SELECT ColumnB FROM Table2 

SELECT a.Val, 
     b.Val 
FROM @TableA a INNER JOIN 
     @TableB b ON a.ID = b.ID 
+1

謝謝你的回覆。上面的邏輯完全適用於我的案例。 – BABA 2009-12-07 12:40:44

+0

非常好的邏輯。它幫助了我。謝謝。 – Raaghav 2013-07-05 08:47:27

3

由於兩個表之間沒有關係,所以此操作沒有真正定義。 table1中的哪一行與table2中的哪一行一致?

你應該建立一個關係。

無論如何你想實現什麼?

+0

我傳遞兩個參數sp都是逗號saperated字符串.. 然後在sp中將字符串轉換爲兩列..這些列必須與另一個表進行更新。 – BABA 2009-12-04 14:59:12

2

我不知道大圖片,但是從你所說的,這裏有一個例子。必須有某種方法來定義表1中的哪條記錄應該與表2中的記錄相匹配。我假設它們在按每個表中的列排序時的排序上匹配(例如,表1中的記錄1由列A與列B中排序的表2中的記錄1匹配)。這個例子需要SQL 2005或更高版本。

DECLARE @T1 TABLE (A varchar(10)) 
DECLARE @T2 TABLE (B varchar(10)) 

INSERT @T1 VALUES ('a') 
INSERT @T1 VALUES ('b') 
INSERT @T1 VALUES ('c') 
INSERT @T2 VALUES ('d') 
INSERT @T2 VALUES ('e') 
INSERT @T2 VALUES ('f') 

SELECT A, B 
FROM 
(
    SELECT ROW_NUMBER() OVER (ORDER BY A ASC) AS RowNo, A 
    FROM @T1 
) t1 
JOIN 
(
    SELECT ROW_NUMBER() OVER (ORDER BY B ASC) AS RowNo, B 
    FROM @T2 
) t2 ON t1.RowNo = t2.RowNo 
+0

這正是我要發佈的內容。 – DForck42 2009-12-04 21:14:30

0

系統如何知道將table1的'a'值與表2的'd'值相關聯?如果有人又增加了一行值 'C',以表2如果您的查詢現在輸出

null- c 
    a - d 
    b - e 
    c - f 

a - c 
    b - d 
    c - e 

a - c 
    b - d 
    c - e 
null- f 

??? ---您必須以某種方式指定使用哪些規則將table1中的行與table2中的行相關聯。

如果你只是想基於字母排序相關的行, 那麼如果值在每個表中唯一的,(只使用標準SQL),試試這個

Select Z1.ColumnA, z2.ColumnB 
    From (Select ColumnA, 
       (Select Count(*) 
       From Table1 
       Where ColumnA < t1.ColumnA) RowNo, 
      From Table1 T1) z1 
    Join (Select ColumnB, 
       (Select Count(*) 
       From Table2 
       Where ColumnB < t2.ColumnB) RowNo, 
      From Table2 T2) z2 
     On z1.RowNo = z2.RowNo 
    Order By z1.RowNo 
相關問題