如何跨多个具有相同ID的MySQL表选择数据

如何跨多个具有相同ID的MySQL表选择数据,mysql,Mysql,我创建了两个表A和表B,并尝试使用内部连接两个表,但结果将在不同的行中,即使ID相同 $sql = "SELECT * FROM Table A INNER JOIN Table B ON Table A.ID = Table B.ID"; 是否有任何mysql select可以提取一行中具有相同ID的所有值,如“结果”表所示? 代码: 您必须按id、类型分组,并且只能用于项目列。 从示例数据来看,每行的item1或item2中似乎有一个为null。 如果是这种情况,则: select a

我创建了两个表A和表B,并尝试使用内部连接两个表,但结果将在不同的行中,即使ID相同

$sql = "SELECT * FROM Table A INNER JOIN Table B ON Table A.ID = Table B.ID";
是否有任何mysql select可以提取一行中具有相同ID的所有值,如“结果”表所示? 代码:

您必须按id、类型分组,并且只能用于项目列。 从示例数据来看,每行的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:

看。 结果:


请阅读group_concat。欢迎来到Stack Overflow!请用相关的、最少的示例数据来构建SQL问题,以展示您的需求和相应的预期输出。请阅读此链接:是的,您可以使用group_concat。我曾尝试使用group_concat,但结果仅显示ID=1结果$sql=从表A中选择group_CONCATITEM1,group_CONCATITEM2在表A上内部联接表B。ID=表B.ID,其中表A.ID=表B.ID;
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
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                     |