mysql 多表查询和限定条件字段检索 如id转中文

项目场景:

mysql 有A和B甚至更多表,根据A表的某一个字段在其他表中查找相关字段数据。实现例如 id转中文字符灯需求。


问题描述

例如:
A表中字段:;

    +----+-------+--------+
    | id    | age  | typeId |
    +----+-------+--------+
    | 1asd | 18   |      1 |
    +----+-------+--------+

B表中字段”;

    +----+-------+--------+
    | id | Aid   | name|
    +----+-------+--------+
    |  1 | 1asd |  小何|
    +----+-------+--------+

现在要根据A表的id查出,改id下的所有人的中文名。在B表中Aid对应的就是A表的id;
实现效果如下:

    +----+-------+--------+--------+--------+
    | id    | age  | typeId |Aid  | name   |
    +----+-------+--------+--------+--------+
    | 1asd | 18   |      1 |1asd  | 小何 |
    +----+-------+--------+--------+--------+

原因分析:

设计多表查询,这里回用到JOIN语句
在这里插入图片描述
根据具体情况不同选择适当的JOIN语句,他们的区别如下:

INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

在这里我们选择LEFT JOIN实现


解决方案:

在联合查询的过程中若存在字段名相同的情况下,需要对表AS 单独命名。也可以省略as
left join 和group by 连用 可以对限定字段名进行相同查询

select a.id,a.age,a.typeId,b.name from A as a

left join (select id,Aid,name from B group by Aid) as b on a.id=b.Aid

这样就实现了id转换中文,那么对B中的数据进行查询,且对B对应的字段名AS重命名后 要注意,在where查询中要使用原有的字段名。

select a.id,a.age,a.typeId,b.name AS "getName" from A as a

left join (select id,Aid,name from B group by Aid) as b on a.id=b.Aid
--要使用原有的字段名
where b.name ='xxxx'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值