mysql - SQL 查询从以下情况的两个表中检索数据

标签 mysql join aggregate-functions

我在 MySQL 数据库中有两个表表 A 和表 B,我想要它们两个列的输出,
表A列a_id整数(5),a_namevarchar(20)。
表 B 列 b_id 整数(5),b_name varchar(20),a_id varchar(10)。

        And tables records are,
        select * from a;                
        +------+--------+
        | a_id | a_name |
        +------+--------+
        |    1 | a1     |
        |    2 | a2     |
        +------+--------+

        select * from b;            
        +------+--------+------+
        | b_id | b_name | a_id |
        +------+--------+------+
        |    1 | b1     | 1,2  |
        |    2 | b2     | 1    |
        |    3 | b3     | null |
        +------+--------+------+

        Now i want to get data which are in b table but also
        with a_name column,         
        +------+--------+-------+
        | b_id | b_name | a_name|
        +------+--------+-------+
        |    1 | b1     | a1,a2 |
        |    2 | b2     | a1    | 
        |    3 | b3     | null  | 
        +------+--------+-------+

如何实现此输出,我尝试使用 join 但没有得到正确的结果。是否有任何聚合函数可以组合 a1,a2 值并在行中返回。非常感谢任何帮助,谢谢。

最佳答案

这就是您可以做到这一点的方法,但是您应该规范化表b并且不要存储逗号分隔的值。

select
b.b_id,
b.b_name,
group_concat(a.a_name) as a_name
from b
left join a on find_in_set(a.a_id,b.a_id) > 0
group by b.b_id

关于mysql - SQL 查询从以下情况的两个表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33233499/

相关文章:

php - 如何在 JOIN 中包含附加的 select 语句? PHP-MySQL

mysql - 在聚合查询中获取非聚合数据

sql - 想要对某些字段求和而对其他字段求和 SQL

python - 具有多个输出列的 Pandas 聚合函数

php - 具有多个 WHERE 和 SELECT 条件的更新 - MySql

mysql - MySQL 中的重复或不可预测的结果

php - 使用连接表和用户 ID 输出重复的数据行

MySQL - 左连接顺序被忽略

mysql - 对 4 个表进行 JOIN 和 GROUP BY 的复杂 SQL 查询

php - 用PHP读取带有控制字符的TXT文件