【问题标题】:query to get multiple rows with or without group concat查询以获取具有或不具有组连接的多行
【发布时间】:2012-07-16 13:07:29
【问题描述】:

我的表结构如下:

 users:
    id PK
    username
    email
    salt
    password
    date_created

questions:
    id PK
    user_id FK(users)
    title
    date_created
    date_updated

answers:
    id PK
    question_id FK(questions)
    user_id FK(users)
    body
    date_created

所以我需要一个查询来从这些表中获取数据并显示用户的最后 5 个问题以及每个问题的前 3 个答案。像这样的:

"What is my favorite color? posted by user

red - posted by user1
green - posted by user2
yellow - posted by user3

.....
"

这就是我的目标。如何在 1 个查询中执行此操作?我应该使用 group concat 对 1 个问题的多个答案进行分组吗?或者我应该得到结果并在 PHP 中解析数组以按 question_id 对答案进行分组。我也需要这个查询非常快。我不确定进行 1 次查询或进行多次查询是否会更快获得用户问题,然后问题得到答案。

【问题讨论】:

标签: php mysql sql query-performance


【解决方案1】:

我认为我要给出的关键“提示”是您可以使用常规的 CONCAT() inside of GROUP_CONCAT();然后使用 JOIN 以及可能在 cmets 中提到的一些技术来为您获取这两个函数所需的中间结果集,以获取您的输出。

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 2021-12-14
    • 2014-03-09
    • 2012-08-24
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多