如何在 T-SQL 中实现 ZIP JOIN?

2022-10-31数据库问题
0

本文介绍了如何在 T-SQL 中实现 ZIP JOIN?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

假设我有桌子#Foo:

Let say I have table #Foo:

Id Color
-- ----
1  Red
2  Green
3  Blue
4  NULL

和表#Bar:

Value
-----
1
2.5

我想使用简单的语句来创建表结果:

I would like to create table Result using simple statement to get:

Id Color   Value
-- ----   -----
1  Red    1
2  Green  2.5
3  Blue   NULL
4  NULL   NULL

到目前为止我发明的是:

What I have invented so far is:

WITH cte1
AS
(
    SELECT [Id], [Color], ROW_NUMBER() OVER (ORDER BY [Id]) AS 'No'
    FROM #Foo
),
cte2
AS
(
    SELECT [Value], ROW_NUMBER() OVER (ORDER BY [Value]) AS 'No'
    FROM #Bar
)
SELECT [Id], [Color], [Value]
FROM cte1 c1
FULL OUTER JOIN cte2 c2 ON c1.[No] = c2.[No]

您知道在 T-SQL 中执行 ZIP JOIN 更快或更标准的方法吗?

Do you know faster or more standard way to do ZIP JOIN in T-SQL?

推荐答案

你可以试试这个.

;WITH CTE AS
(
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS Id, Value FROM #Bar
)
SELECT F.Id, F.Color, CTE.Value
FROM #Foo F
LEFT JOIN CTE ON CTE.Id = F.Id

这篇关于如何在 T-SQL 中实现 ZIP JOIN?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End
T-SQL

相关推荐

如何像在 T-SQL 中一样在 PL/SQL 中声明和使用变量?
How do I declare and use variables in PL/SQL like I do in T-SQL?(如何像在 T-SQL 中一样在 PL/SQL 中声明和使用变量?)...
2023-11-03 数据库问题
1

用于查找冗余索引的 T-SQL
T-SQL for finding Redundant Indexes(用于查找冗余索引的 T-SQL)...
2023-10-25 数据库问题
4

在 T-SQL 中透视数据
Pivot data in T-SQL(在 T-SQL 中透视数据)...
2023-10-10 数据库问题
3

仅加入“最新"用t-sql记录
Join to only the quot;latestquot; record with t-sql(仅加入“最新用t-sql记录)...
2023-10-09 数据库问题
3

T-SQL 子查询 Max(Date) 和 Joins
T-SQL Subquery Max(Date) and Joins(T-SQL 子查询 Max(Date) 和 Joins)...
2023-10-08 数据库问题
0

如何通过使用 T-SQL 将两个整数值相除来获得浮点结果?
How to get a float result by dividing two integer values using T-SQL?(如何通过使用 T-SQL 将两个整数值相除来获得浮点结果?)...
2023-07-17 数据库问题
1