pro*_*dad 1 t-sql sql-server join
我们假设我有两张桌子...... Foo和Bar.它们包含以下数据.
Table Foo:
Foo_Id
------
100
101
Table Bar:
Bar_Id
------
200
201
Run Code Online (Sandbox Code Playgroud)
如您所见,每个表都有两个记录.我想以这样的方式将这些表格连在一起,以便返回两个记录; 最终目标是为这些记录创建一对一的关系,即使在这种状态下他们没有这种关系.这些数据的结果将进入表Foo_Bar以存储这种新关系.
理想情况下,输出看起来类似于以下内容.
Foo_Id Bar_Id
------ ------
100 200
101 201
Run Code Online (Sandbox Code Playgroud)
此代码将用于T/SQL存储过程.我可以使用while循环轻松地编写这个,但我不想使用while循环,因为真实世界的应用程序将拥有比四个记录更多的数据,并且将由多个用户每天多次调用.
提前致谢!
编辑:
这或多或少都是库存问题......我有100片披萨和100个人说他们想要一块披萨.Foo_Bar表基本上是一种为每人分配一片披萨的方法.该表存在,此解决方案将加载表的数据.
试试这个:
declare @Foo table (Foo_Id int)
INSERT INTO @Foo VALUES (100)
INSERT INTO @Foo VALUES (101)
declare @Bar table (Bar_Id int)
INSERT INTO @Bar VALUES (200)
INSERT INTO @Bar VALUES (201)
SELECT
dt_f.Foo_Id
,dt_f.RowNumber
,dt_b.Bar_Id
FROM (SELECT
Foo_Id, ROW_NUMBER() OVER(ORDER BY Foo_Id) AS RowNumber
FROM @Foo
) dt_f
INNER JOIN (SELECT
Bar_Id, ROW_NUMBER() OVER(ORDER BY Bar_Id) AS RowNumber
FROM @Bar
) dt_b ON dt_f.RowNumber=dt_b.RowNumber
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2918 次 |
| 最近记录: |