Mysql 结合时连接(公式1、公式2、公式3)

Mysql 结合时连接(公式1、公式2、公式3),mysql,join,coalesce,Mysql,Join,Coalesce,使用MySQL,我正在尝试执行一个JOIN,类似于将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.lastn

使用MySQL,我正在尝试执行一个
JOIN
,类似于将
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
函数那样使用它,本质上说明(即使它不起作用):

如果这样做有效,它将告诉SQL首先在
(bioguide.firstname=house.first和bioguide.lastname=house.last)上加入
(left(bioguide.firstname,3)=left(house.first,3)和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>
分组依据

谢谢!你能想出不创建多个表的方法吗?
group by <id column that identifies each row in the result set>