在SQL Server 2000中为两个不同的表选择两列
我有一个包含两个表(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