gpt4 book ai didi

Sql COALESCE 整行?

转载 作者:行者123 更新时间:2023-12-04 13:54:05 31 4
gpt4 key购买 nike

我刚刚了解了 COALESCE,我想知道是否可以在两个表之间合并整行数据?如果没有,以下散漫的最佳方法是什么?

例如,我有这两个表并假设所有列都匹配:

tbl_员工

Id     Name     Email     Etc
-----------------------------------
1 Sue ... ...
2 Rick ... ...

tbl_客户
Id     Name     Email     Etc
-----------------------------------
1 Bob ... ...
2 Dan ... ...
3 Mary ... ...

还有一个带有 id 的表:

tbl_PeopleInCompany
Id     CompanyId 
-----------------
1 1
2 1
3 1

我想以一种方式查询数据,即从第一个表中获取匹配 id 的行,但如果没有找到 id,则从第二个表中获取。

所以结果查询看起来像:
Id     Name     Email     Etc
-----------------------------------
1 Sue ... ...
2 Rick ... ...
3 Mary ... ...

苏和瑞克从第一张 table 上拿下来,玛丽从第二张 table 上拿下来。

最佳答案

 SELECT Id, Name, Email, Etc FROM tbl_Employees
WHERE Id IN (SELECT ID From tbl_PeopleInID)
UNION ALL
SELECT Id, Name, Email, Etc FROM tbl_Customers
WHERE Id IN (SELECT ID From tbl_PeopleInID) AND
Id NOT IN (SELECT Id FROM tbl_Employees)

根据行数,有几种不同的方式来编写这些查询(使用 JOIN 和 EXISTS),但请先尝试这种方式。

此查询首先从 tbl_Employees 中选择目标列表(表 tbl_PeopleInID)中具有 Id 值的所有人员。然后将第二个查询的结果添加到这组行的“底部”。第二个查询获取目标列表中带有 Id 的所有 tbl_Customer 行,但不包括出现在 tbl_Employees 中的任何带有 Id 的行。

总列表包含您想要的人 - 来自 tbl_PeopleInID 的所有 Id,优先考虑员工,但缺少从客户中提取的记录。

关于Sql COALESCE 整行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408269/

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