使用MySQL,我正在尝试执行一个JOIN,类似于将JOIN与OR语句一起使用,如下所示:
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)上使用,依此类推。
这样的事情有可能发生吗?如果其他信息有帮助,请让我知道。
谢谢大家!
发布于 2013-06-21 05:42:48
您可以使用不同表中的不同匹配来构造查询,然后在select中使用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
group by <id column that identifies each row in the result set>https://stackoverflow.com/questions/17224186
复制相似问题