当前位置: 代码迷 >> Sql Server >> 求sqlite的一个SQL语句解决方案
  详细解决方案

求sqlite的一个SQL语句解决方案

热度:99   发布时间:2016-04-24 10:16:13.0
求sqlite的一个SQL语句
有两个字段一样的表,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
  相关解决方案