我有2个表与一对多的关系。表A有列
- id
- Name
表B与表A相关。表B属于表A.表B具有列
- id
- TableA_id_ForeignKey
- TimeChange
- Status
我想写一个MySQL查询,当表B没有表A的相关行条目时,虚拟数据将打印在表A中该特定行的输出中。结果将类似于;
TableA_Name 0000-00-00 00
我们可以告诉表A中的哪一行没有关联的行和一些虚拟数据。非常感谢你的帮助。
答案 0 :(得分:1)
select
b.*,
coalesce(a.name, '0000-00-00 00') as dummy
from
b
left join a on b.a_fk = a.id
使用此left join
,您可以获得b
中的所有行,无论a
中是否有匹配的行。如果没有匹配的行,则返回null
。然后coalesce()
函数返回其第一个参数,而不是null
。
更新:理解错误的问题......
select
a.*,
'hello' as dummy /*with the where clause you just get rows where there's no match anyway*//
from
b
right join a on b.a_fk = a.id
where b.id is null