gpt4 book ai didi

sql - 如果第一个表没有匹配项,则从两个表中提取结果

转载 作者:行者123 更新时间:2023-12-01 13:38:45 24 4
gpt4 key购买 nike

尝试创建一个存储过程,我可以使用它来按名字和姓氏搜索人员。 Fname 和 Lname 一起存储在两个不同的表中,希望从 Table1 中提取,如果没有匹配,则从 Table2 中提取结果。

@FName VARCHAR(20) = NULL
@LName VARCHAR(20) = NULL,

SELECT TB1.ID, TB1.FName, TB1.LName

FROM Table1 TB1
LEFT JOIN Table2 TB2
ON TB1.ID = TB2.ID

WHERE 1=1
AND COALESCE(TB1.Fname, '') LIKE '%' + REPLACE(COALESCE(@FName, TB1.Fname, ''), ' ', '%') + '%'
AND COALESCE(TB1.Fname, '') LIKE '%' + REPLACE(COALESCE(@LName, TB1.Fname, ''), ' ', '%') + '%'

到目前为止我尝试的是这个,它似乎拉回了所有的记录。

WHERE   1=1
AND COALESCE(TB1.Fname, '') LIKE '%' + REPLACE(COALESCE(@FName, TB1.Fname, ''), ' ', '%') + '%'
OR COALESCE(TB2.Fname, '') LIKE '%' + REPLACE(COALESCE(@FName, TB2.Fname, ''), ' ', '%') + '%'
AND COALESCE(TB1.Lname, '') LIKE '%' + REPLACE(COALESCE(@LName, TB1.Lname, ''), ' ', '%') + '%'
OR COALESCE(TB2.Lname, '') LIKE '%' + REPLACE(COALESCE(@LName, TB2.Lname, ''), ' ', '%') + '%'

任何帮助或指导将不胜感激,我在谷歌上搜索了大约最后一天左右,但我想我在谷歌上搜索了错误的东西。

最佳答案

您应该使用 Full Join,确保合并结果,以便它从具有数据的任何表中提取数据。

SELECT  Coalesce(TB1.ID, TB2.ID) As ID, 
Coalesce(TB1.FName, TB2.FName) As FName,
Coalesce(TB1.LName,TB2.LName) As LName
FROM Table1 TB1
Full JOIN Table2 TB2
ON TB1.ID = TB2.ID

关于sql - 如果第一个表没有匹配项,则从两个表中提取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116127/

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