微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决mysql查询从两个表中获取数据

我正在尝试从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表中相同的记录。现在,当任何一个表都没有数据时,就会出现问题,在这种情况下,整个结果为空。

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

解决方法

使用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中的行。

,

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

您正在描述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,null as details,null as subdetails from a where name like '%ABC%'
    union all 
    select null,details,sub_details from b  where name like '%ABC%'
) t 
group by name

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。