mysql - 如何跨多个具有相同 ID 的 MySQL 表选择数据
问题描述
我已经创建了两个表(表 A 和表 B)并尝试使用 INNER JOIN 两个表,但即使 ID 相同,结果也会在不同的行中。
$sql = "SELECT * FROM Table A INNER JOIN Table B ON Table A.ID = Table B.ID";
是否有任何 mysql 选择来提取一行中具有相同 ID 的所有值,如“结果”表中所示?代码:
$sql =
"SELECT GROUP_CONCAT(ITEM1), GROUP_CONCAT(ITEM2)
FROM Table A INNER JOIN Table B
ON Table A.ID = Table B.ID
WHERE Table A.ID = Table B.ID ";
解决方案
您必须group by id, type
且group_concat()
仅用于item
列。
从您的示例数据看来,每行中的一个item1
或.
如果是这种情况,那么:item2
null
select
a.id, a.type,
group_concat(coalesce(b.item1, b.item2) order by b.sub_id) item
from tablea a inner join tableb b
on b.id = a.id
group by a.id, a.type
请参阅演示。
如果他们可以是两者null
或两者都不是null
:
select
a.id, a.type,
group_concat(concat_ws(',', item1, item2) order by b.sub_id) item
from tablea a inner join tableb b
on b.id = a.id
group by a.id, a.type
请参阅演示。
结果:
| id | type | item |
| --- | --------- | --------------------------- |
| 1 | FRUIT | BANANA,PINEAPPLE,WATERMELON |
| 2 | VEGETABLE | SPINACH,CARROT |
| 3 | MEAT | CHICKEN |
推荐阅读
- angular - Angular不会打开大的blob文件
- c++ - 创建相互引用的类时如何避免循环依赖和未定义类型错误?
- mysql - 来自服务器的时间戳与本地不同
- apache-kafka - 当我的生产者未能成功发布消息时,我有没有办法从 Kafka 中检索错误代码?
- javascript - Sketch App Plugin - Google 和 Facebook 身份验证并在 Sketch 插件中维护用户会话?
- python - 如何解决多类分类中的“RuntimeError: 1D target tensor expected, multi-target not supported”?
- flutter - Flutter 应用中的反应时间延迟
- mongodb - 一个MongoDB Atlas集群可以连接多少个应用程序?
- html - 印度车号输入验证和格式化使用html和css
- c# - 如何通过发送 OAuthPrompt 与用户开始 1:1 对话