mysql查询从两个表中获取数据

时间:2020-11-11 20:11:55

标签: mysql sql string left-join full-outer-join

我正在尝试从2个表(表A和表B)中获取数据。 表A具有ID,名称,描述。 表B具有名称,详细信息,sub_details。

A中总共有10条记录,B中总共有5条记录。

如果我执行查询,

select a.id , a.name , b.details , b.sub_details 
from A a, B b 
where a.name = b.name and b.name like "%ABC%";

结果将显示在ABC列中具有b.name且在A表中相同的记录。现在,当任何一个表都没有数据时,就会出现问题,在这种情况下,整个结果为空。

我的问题是,即使任何一个表都没有数据,如果我想获得结果,我应该执行哪个查询?

2 个答案:

答案 0 :(得分:1)

使用LEFT JOIN

SELECT a.id, b.name, b.details, b.sub_details
FROM b
LEFT JOIN a ON a.name = b.name
WHERE b.name like '%ABC%'

如果a中没有匹配的行,则会显示ba.id = NULL中的行。

答案 1 :(得分:1)

即使任何表中没有数据,我也要获取结果

您正在描述full join。不幸的是,MySQL不支持。假设name是两个表中的唯一键,则可以使用union all和聚合:

select max(id) as id, name , max(details) as details , max(sub_details) as sub_details
from (
    select id, name, null as details, null as subdetails from a where name like '%ABC%'
    union all 
    select null, name, details, sub_details from b  where name like '%ABC%'
) t 
group by name
相关问题