我有一個包含兩個表(Table1和Table2)的數據庫。表1有一列ColumnA和表2有一列ColumnB我想選擇兩個列,在SQL Server 2000中爲兩個不同的表選擇兩列
尋找類似:在表1
ColumnA:
一個
b
c
表2中的列A:
d
Ë
˚F
結果集應該是:
一個d
Bé
全稱
預先感謝..
我有一個包含兩個表(Table1和Table2)的數據庫。表1有一列ColumnA和表2有一列ColumnB我想選擇兩個列,在SQL Server 2000中爲兩個不同的表選擇兩列
尋找類似:在表1
ColumnA:
一個
b
c
表2中的列A:
d
Ë
˚F
結果集應該是:
一個d
Bé
全稱
預先感謝..
我敢肯定,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
由於兩個表之間沒有關係,所以此操作沒有真正定義。 table1中的哪一行與table2中的哪一行一致?
你應該建立一個關係。
無論如何你想實現什麼?
我傳遞兩個參數sp都是逗號saperated字符串.. 然後在sp中將字符串轉換爲兩列..這些列必須與另一個表進行更新。 – BABA 2009-12-04 14:59:12
我不知道大圖片,但是從你所說的,這裏有一個例子。必須有某種方法來定義表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
這正是我要發佈的內容。 – DForck42 2009-12-04 21:14:30
系統如何知道將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
是有之間的實際關係這兩張桌子?即他們是否設置了主鍵和外鍵? – DForck42 2009-12-04 21:15:11