首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并时加入(Formula1、Formula2、Formula3)

合并时加入(Formula1、Formula2、Formula3)
EN

Stack Overflow用户
提问于 2013-06-21 05:33:09
回答 1查看 75关注 0票数 0

使用MySQL,我正在尝试执行一个JOIN,类似于将JOINOR语句一起使用,如下所示:

代码语言:javascript
复制
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函数的方式使用它,本质上是声明(即使它不工作):

代码语言:javascript
复制
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)上使用,依此类推。

这样的事情有可能发生吗?如果其他信息有帮助,请让我知道。

谢谢大家!

EN

回答 1

Stack Overflow用户

发布于 2013-06-21 05:42:48

您可以使用不同表中的不同匹配来构造查询,然后在select中使用coalesce()来获取您想要的内容:

代码语言:javascript
复制
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

代码语言:javascript
复制
group by <id column that identifies each row in the result set>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17224186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档