猿问

交集表的连接语句

我想将用户连接到一辆或多辆汽车。表格如下所示:


表_a


id     name

1      tom

2      max

表_b


id     car

1      car1

2      car2

3      car3

表_ab


id     id_a     id_b

1      1        1

2      1        2

3      2        1

哪个是正确的 select 语句,结果如下:


汤姆有汽车 1 和 2

max 有 car1

我不明白它与INNER JOIN.. 正确的说法是什么?


桃花长相依
浏览 163回答 4
4回答

慕哥9229398

SELECT `name`,`car` FROM table_a aINNER JOIN table_ab ab ON a.id = ab.id_aINNER JOIN table_b b ON ab.id_b = b.idPS:您也可以在没有任何连接的情况下执行此操作,在某些情况下,它更快更干净。SELECT `name`,`car` FROM table_a a,table_b b, table_ab abWHERE a.id = ab.id_a AND ab.id_b = b.id在本例中,DESCRIBE 显示了相同的结果,因此任一选项都适用。

慕森王

我想你想要joins 和聚合:select a.name, group_concat(car) as carsfrom ab join     a     on a.id = ab.id_a join     b     on b.id = ab.id_bgroup by a.id, a.name;

aluckdog

你需要两个加入  select a.name, b.car  from table_ab ab  inner join  table_a a ON a.id = ab.id_a  inner join  table_b b ON b.id = ab.id_b

LEATH

您必须加入表,按名称分组并group_concat()结合使用concat():select concat(a.name, ' has ', group_concat(car separator ' and ')) colfrom table_a a inner join table_ab ab on ab.id_a = a.idinner join table_b b on ab.id_b = b.idgroup by a.id, a.name请参阅。结果:| col                   || --------------------- || tom has car1 and car2 || max has car1          |
随时随地看视频慕课网APP
我要回答