向数据库大佬请教一个联合查询问题

新手上路,请多包涵

三个表分别是strategy,group,strategy_group。
1647776807(1).png
1647776823(1).png

其中strategy_group是strategy和group的id联系对应表。

1647776608(1).png

我想查询的是strategy的全部,和group中的Gatewaymac。自己写的查询语句如下

1647776683(1).png

请问大佬怎么把那些没有group联系的strategy信息也显示出来呀,并且将Gatewaymac值设为空

阅读 1.3k
2 个回答

你应该使用 LEFT JOIN,可以保留被拼表字段为空的数据。

LEFT JOIN 时没有对应值的数据的字段就是空值 null,如果你想空的时候有一个默认值可以借助 IF 函数:

SELECT IF(gatewaymac IS NULL, 'defaultValue', gatewaymac) gatewaymac

inner join 的使用导致的,改写了一下你的语句,希望能帮助到你

select s.*,ifnull(g.gatewaymac)
from vle_strategy s
left join strategy_group sg
on s.id = sg.strategy_id
left join vle_group g
on sg.group_id = g.id
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题