高分请教个查询的sql语句

t8000 2014-06-01 10:04:47
有两个表,teachers和likes
teachers表中构架和部分数据
teacherid teachername teacherage
1 王老师 50
2 周老师 41
3 黄老师 30
4 杨老师 28
5 余老师 31
...

likes表架构和部分数据
likeid teacherid
1 1
2 3
3 4

我想列出所有的的老师,如果老师在likes表中,则该老师后面出现一个1,如果没有在likes表中,则该老师后面出现一个0,效果如下

teacherid teachername teacherage
1 王老师(1) 50
2 周老师(0) 41
3 黄老师(1) 30
4 杨老师(1) 28
5 余老师0) 31

请问这个sql语句该如何写?
...全文
201 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayzen1988 2014-06-09
  • 打赏
  • 举报
回复


SELECT A.teacherid,CONCAT(A.teachername,case when B.teacherid IS NULL then 0 else 1 end)teachername,A.teacherage FROM teachers A
LEFT JOIN likes B
ON A.teacherid=B.teacherid

wasdasdfqwer 2014-06-06
  • 打赏
  • 举报
回复

--不得不说和楼上的斑竹的,,,,
select te.tid,
CONCAT(teName,"(",IF(li.lid is not null,1,0),")") teName_,
te.tage
from teachers te
left join likes li
on te.tid = li.tid
order by te.tid

--或者(很明显上一个简洁,)
select temp.tid,concat(temp.teName,"(",IF(lid is not NULL,1,0),")") teName,temp.tage,temp.lid from
(
select te.tid,te.teName,te.tage,li.lid from teachers te left join likes li on te.tid = li.tid order by te.tid
) temp;




wwwwb 2014-06-01
  • 打赏
  • 举报
回复
SELECT A.*,CONCAT(A.teachername,IF(B.teacherid IS NULL,0,1)) FROM teachers A LEFT JOIN likes B ON A.teacherid=B.teacherid
ACMAIN_CHM 2014-06-01
  • 打赏
  • 举报
回复
select teacherid , teachername , (select max(1) from likes where teacherid=t.teacherid) ,teacherage from teachers t

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧