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

三个表分别是strategy,group,strategy_group。

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

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

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


回答:

你应该使用 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

以上是 向数据库大佬请教一个联合查询问题 的全部内容, 来源链接: utcz.com/p/944300.html

回到顶部