mysql三表查询与if函数

2018-05-09  本文已影响0人  莫听风淋打叶声

       今天因为需求需要又改了接口,其中涉及到数据的三表关联和sql if语句,起先不太了解不过经过一段时间探索终于是搞懂了。于是写下一点心得。


SELECT a.user_id,a.nickname,b.phone,b.sex,b.avatar_url,IF(c.id,1,0) FROM group_user a INNER JOIN app_user b ON a.user_id=b.user_id LEFT JOIN friend c ON c.`into_id`=a.user_id AND c.`from_id`=:user_id  WHERE group_id=:group_id";

三张表用于查找群组下的用户字段,然后判断是否是当前用户的好友。

LEFT JOIN:

左表数据有几条则输出几条数据,和又表无关。

SELECT a.user_id,a.nickname,b.phone,b.sex,b.avatar_url,IF(c.id,1,0) FROM group_user a

 INNER JOIN friend c ON c.`into_id`=a.user_id AND c.`from_id`=1

LEFT JOIN app_user b ON a.user_id=b.user_id  WHERE group_id=123456

左表有一条数据

SELECT a.user_id,a.nickname,b.phone,b.sex,b.avatar_url,IF(c.id,1,0) FROM group_user a INNER JOIN app_user b ON a.user_id=b.user_id

LEFT JOIN  friend c ON c.`into_id`=a.user_id AND c.`from_id`=1  WHERE group_id=123456

左表有两条数据

然后是if()函数,其实他判断的是一个表中的一个字段,如上c.id,其实判断的是关联查询的这张表中这个字段是否为空,在此将id字段显示出来

SELECT a.user_id,a.nickname,b.phone,b.sex,b.avatar_url,c.id,IF(c.id,1,0) FROM group_user a INNER JOIN app_user b ON a.user_id=b.user_id

LEFT JOIN  friend c ON c.`into_id`=a.user_id AND c.`from_id`=1  WHERE group_id=123456

如图id字段不为空值则返回1空值返回0.

总结完毕

上一篇下一篇

猜你喜欢

热点阅读