gpt4 book ai didi

mysql - 加入合并(公式1、公式2、公式3)

转载 作者:行者123 更新时间:2023-11-30 01:33:00 25 4
gpt4 key购买 nike

使用 MySQL,我尝试执行类似于使用 JOINOR 语句的 JOIN 操作,例如:

JOIN bioguide ON (bioguide.fulldistrict=house.districtname) OR
(left(bioguide.firstname,3)=left(house.first,3) AND bioguide.lastname=house.last) OR
(bioguide.fulldistrict=house.districtname AND bioguide.lastname=house.last)

正如您可能知道的那样,这样做的问题是,如果一堆不同的方法都有效,那么每行会得到多个结果。

我希望有一种方法可以使用 JOIN 并按照 COALESCE 函数的工作方式使用它,本质上是这样的(即使它不起作用):

JOIN bioguide ON COALESCE(bioguide.firstname=house.first AND
bioguide.lastname=house.last),(left(bioguide.firstname,3)=left(house.first,3) AND
bioguide.lastname=house.last),(bioguide.fulldistrict=house.districtname AND
bioguide.lastname=house.last))

如果有效,它会告诉 SQL 首先在 (bioguide.firstname=house.first AND bioguide.lastname=house.last)JOIN,然后在(left(bioguide.firstname,3)=left(house.first,3) AND bioguide.lastname=house.last)

这样的事情可能吗?如果其他信息有帮助,请告诉我。

谢谢大家!

最佳答案

您可以使用不同表中的不同匹配来构造查询,然后在选择中使用 coalesce() 来获得您想要的结果:

select coalesce(bg1.col1, bg2.col2, bg3.col3)
from . . . left outer join
bioguide bg1
on bg1.fulldistrict=house.districtname left outer join
bioguide bg2
on left(bg2.firstname,3)=left(house.first,3) AND bg2.lastname=house.last left outer join
bioguide bg3
on bg3.fulldistrict=house.districtname AND bg3.lastname=house.last

如果其中一个比较有多个匹配项,这仍然可能会导致多行(如果 bioguide 中的同一行与所有三行匹配,则不会出现重复行的问题)。

如果是这样,请明智地使用分组依据:

group by <id column that identifies each row in the result set>

关于mysql - 加入合并(公式1、公式2、公式3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224186/

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