gpt4 book ai didi

sql - 在 SQL 中将值列表与表行连接

转载 作者:行者123 更新时间:2023-12-01 21:16:37 25 4
gpt4 key购买 nike

假设我有一个值列表,例如 1, 2, 3, 4, 5 和一个表,其中某些值存在于某些列中。这是一个例子:

id  name
1 Alice
3 Cindy
5 Elmore
6 Felix

我想创建一个 SELECT 语句,其中包含列表中的所有值以及与这些值匹配的行中的信息,即执行 LEFT OUTER JOIN 在我的列表和表格之间,所以结果如下:

id  name
1 Alice
2 (null)
3 Cindy
4 (null)
5 Elmore

如何在不创建临时表或使用多个 UNION 运算符的情况下做到这一点?

最佳答案

如果在 Microsoft SQL Server 2008 或更高版本中,则可以使用 Table Value Constructor

 Select v.valueId, m.name 
From (values (1), (2), (3), (4), (5)) v(valueId)
left Join otherTable m
on m.id = v.valueId

Postgres 也有这种结构 VALUES Lists :

SELECT * FROM (VALUES (1, 'one'), (2, 'two'), (3, 'three')) AS t (num,letter)

另请注意可能的 Common Table Expression可以方便地进行连接的语法:

WITH my_values(num, str) AS (
VALUES (1, 'one'), (2, 'two'), (3, 'three')
)
SELECT num, txt FROM my_values

使用 Oracle,这是可能的,尽管更重 From ASK TOM :

with id_list as (
select 10 id from dual union all
select 20 id from dual union all
select 25 id from dual union all
select 70 id from dual union all
select 90 id from dual
)
select * from id_list;

关于sql - 在 SQL 中将值列表与表行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com