有两个字段一样的表,table1是主表,table2是附表(别名表)
/*表1*/
drop table if exists table1;
create table table1(id int
,name varchar(32)
);
/*表2*/
drop table if exists table2;
create table table2(id int
,name varchar(32)
);
insert into table1 values(1, '张三');
insert into table1 values(2, '李四');
insert into table2 values(1, '非张三');
要求写一个SQL语句,当table2有记录时,显示table2的name,否则显示table1的name
即显示结果是:
id, name
1 非张三
2 李四
我尝试这么写,达不到效果,请教各位大神了
select
id, case name2 when null then name1 else name2 end as name
from
(select a.id,a.name as name1,b.name as name2 from table1 a left join table2 b on a.id=b.id);
select * from table1;
select * from table2;
------解决方案--------------------
应该是如下的:
select coalesce(name2,name1)
------解决方案--------------------
或者
SELECT
T1.id
, COALESCE(T2.name, T1.name) AS name
FROM
table1 T1
LEFT JOIN table2 T2 ON T1.id = T2.id