gpt4 book ai didi

sql - 当值存在于具有不同列数的 5 个表之一中时选择行集

转载 作者:行者123 更新时间:2023-12-05 01:19:02 24 4
gpt4 key购买 nike

使用 SQL Server,我需要从文件名列中包含“值”的任何表中返回整行(每个表包含的列),但表的列数不同,每个表都有唯一的列具有他们自己的特定数据类型(他们唯一共有的列名称/类型是我需要检查“值”的文件名列)。

理想情况下,我将能够按照以下方式做一些事情:
SELECT * FROM Table1, Table2, Table3, Table4, Table5
WHERE 文件名 = 'someValue'
由于所有表共享相同的文件名列名。

我曾尝试使用 Union 但遇到了问题,因为表的列数和数据类型不一致。
我也尝试了我能找到的所有 JOIN 组合。

我确信这可以通过 IF EXISTS 来完成,但这将是很多很多看起来不必要的代码行。希望有更优雅的解决方案。
提前致谢!

最佳答案

您可以尝试将表连接在一起。首先创建存储输入的临时表。然后用这个临时表加入表以获得你想要的所有记录。当表中没有该文件名的记录时,您将获得 NULL 值。

create table Table1 (id int,value int);
insert into Table1 values (1,10)

create table Table2 (id int,value int);
insert into Table2 values (1,20)

create table Table3 (id int,value int);
insert into Table3 values (2,30)

这是查询本身
create table #tmp (id int)
insert into #tmp
values (1)

select t.id, t1.value, t2.value, t3.value from #tmp as t

left join Table1 as t1
on t.id = t1.id
left join Table2 as t2
on t.id = t2.id
left join Table3 as t3
on t.id = t3.id

这就是你得到的
id  value   value   value
1 10 20 NULL

关于sql - 当值存在于具有不同列数的 5 个表之一中时选择行集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44804095/

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