【问题标题】:grouping rows with the id using a join mysql?使用连接 mysql 对带有 ID 的行进行分组?
【发布时间】:2012-08-08 00:34:49
【问题描述】:

例如,我有一个名为 table1 和 table2 的表;

table1{q_id,q_text,date},
table2{a_id,q_id,a_text}

我在两个表上运行这样的连接查询:

SELECT *
FROM table1
INNER JOIN table2 ON table1.q_id = table2.q_id

我会得到这样的数据

q_id     q_text    date   a_id   q_id   a_text
 1      sometext    ..     13      1    someanswer  
 1      sometext2   ..     67      1    someanswet2

因为它们将是两个表之间的一对多关系 一个 q_id 可能有很多 a_id 我想进行查询以将具有相同 q_id 的所有 a_id 放入同一行。 如果你明白我的意思。所以上面的两行都有相同的 q_id 所以我希望它们在同一行。谢谢

【问题讨论】:

  • 您可能正在寻找group_concat()
  • 我不是你所说的“同一行”——你想要哪一行的数据?同一行不能有两个不同的条目用于同一字段。

标签: mysql codeigniter model


【解决方案1】:
SELECT table1.q_id,table1.q_text,table1.date,table2.a_id,table2.a_text
    -> FROM table1
    -> LEFT JOIN table2
    -> ON table1.q_id = table2.q_id;

【讨论】:

    【解决方案2】:
      SELECT table1.q_id,table1.q_text,table1.date,table2.a_id,table2.a_text, group_concat(table2.a_id SEPARATOR ',') as a_ids
    -> FROM table1
    -> LEFT JOIN table2
    -> ON table1.q_id = table2.q_id
    -> GROUP BY table1.q_id
    

    使用 group_concat 和分隔符 ','

    【讨论】:

      猜你喜欢
      • 2019-10-13
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2014-04-02
      • 2017-11-14
      • 1970-01-01
      相关资源
      最近更新 更多