Sql server 为SQL Server 2000中的两个不同表选择两列
我有一个数据库,有两个表Table1和Table2。表1有一列A,表2有一列B我想选择这两列 寻找类似于: 表1中的A栏: a b c 表2中的A栏: d e f 结果集应为: d b e 碳纤维Sql server 为SQL Server 2000中的两个不同表选择两列,sql-server,Sql Server,我有一个数据库,有两个表Table1和Table2。表1有一列A,表2有一列B我想选择这两列 寻找类似于: 表1中的A栏: a b c 表2中的A栏: d e f 结果集应为: d b e 碳纤维 提前感谢。由于两个表之间没有关系,因此未真正定义此操作。表1中的哪一行与表2中的哪一行一致 你应该建立一种关系 您到底想要实现什么?我非常确定sql server 2000支持表变量,所以您可以尝试一下 DECLARE @TableA TABLE( ID INT IDENTITY(1,
提前感谢。由于两个表之间没有关系,因此未真正定义此操作。表1中的哪一行与表2中的哪一行一致 你应该建立一种关系
您到底想要实现什么?我非常确定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中的哪个记录应该与表2中的记录匹配。我假设当按每个表中的列排序时,它们在排序上匹配,例如,表1中的记录1按列A排序,与表2中的记录1按列B排序。此示例要求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
系统如何知道将表1中的“a”值与表2中的“d”值相关联?如果有人向表2中添加了另一行值为“c”的行,您的查询现在应该输出吗
null- c
a - d
b - e
c - f
或
或
-您必须以某种方式指定用于将表1中的行与表2中的行关联的规则
如果您只希望根据字母排序关联行,
然后,如果每个表中的值都是唯一的(仅使用标准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
我正在向sp传递两个参数,它们都是逗号字符串。。然后在sp中将字符串转换为两列。。这些列必须与另一个表连接以进行更新。这正是我要发布的内容。这两个表之间是否存在实际关系?也就是说,他们有主键和外键设置吗?非常好的逻辑。它帮助了我。谢谢
a - c
b - d
c - e
null- f
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