mysql 如果子查询中存在则取值,如果不存在则使用默认值

7vhp5slm  于 2022-12-17  发布在  Mysql
关注(0)|答案(1)|浏览(203)

我试着实现一个特定的mysql查询,但是我没有弄明白。想象一下你有一个名字和年龄为kitty的集合。它可能看起来像这样:

我想要的是,当我发现ref_name ref_age中有name和age的组合值时,我使用cat breed,对于其他人,我使用European breed默认值(是的,这个例子很奇怪,但你明白了)
在上面的示例的结尾,它应该给予这个结果

我试着写一个查询,看起来像这样:

SELECT *, CASE WHEN EXISTS(SELECT * FROM cats as a
inner join cats as b
on a.name = b.ref_name
and a.age = b.ref_age) THEN a.breed ELSE "European" END as breed
FROM cats
order by breed

但“欧洲”似乎从来没有设置...我尝试了一个如果没有更多的成功
感觉我离我想要的不远,但不满意
你有办法做到这一点吗?

cbjzeqam

cbjzeqam1#

您可以使用LEFT OUTER JOINcats Acats B以条件A.name = B.ref_name AND A.age = B.ref_age连接。当A中不存在匹配记录时,表B中的这些记录将转到NULL。稍后,使用COALESCE函数选择第一个NON-NULL参数:

SELECT a.name, a.age, COALESCE(b.breed, 'European') FROM cats AS a LEFT OUTER JOIN cats AS b ON (a.name = b.ref_name and a.age = b.ref_age)

相关问题