SQL 查询从以下情况的两个表中检索数据
SQL Query to retrive data from two tables from below situation
我在 MySQL 数据库中有两个 table table A 和 table B,我想要它们的输出列,
table A 列 a_id integer(5),a_name varchar(20).
table B 列 b_id integer(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 |
+------+--------+-------+
如何实现这个输出我已经尝试过加入但没有得到正确的result.is有任何聚合函数可以结合a1,a2值和return在row.any帮助很多非常感谢。
这是您可以做到的方法,但是您应该规范化 table 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 数据库中有两个 table table A 和 table B,我想要它们的输出列,
table A 列 a_id integer(5),a_name varchar(20).
table B 列 b_id integer(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 |
+------+--------+-------+
如何实现这个输出我已经尝试过加入但没有得到正确的result.is有任何聚合函数可以结合a1,a2值和return在row.any帮助很多非常感谢。
这是您可以做到的方法,但是您应该规范化 table 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