Php MySQL查询的问题

Php MySQL查询的问题,php,mysql,greatest-n-per-group,Php,Mysql,Greatest N Per Group,我有两张桌子: 问题表的结构如下: id title userid date id idquestion userid message date 和答案表具有以下结构: id title userid date id idquestion userid message date 我想展示所有问题以及该问题的最新答案 例如,如果我们有5个问题,我想得到如下内容: id title message messagedate 1 qs 1 mess 1 2010

我有两张桌子:

问题表的结构如下:

id
title
userid
date
id
idquestion
userid
message
date
和答案表具有以下结构:

id
title
userid
date
id
idquestion
userid
message
date
我想展示所有问题以及该问题的最新答案

例如,如果我们有5个问题,我想得到如下内容:

id    title   message   messagedate
1     qs 1    mess 1    2010-11-18
2     qs 2    mess 2    2010-11-19
3     qs 3    mess 3    2010-11-20
4     qs 4    mess 4    2010-11-21
到目前为止,我的问题是:

    SELECT q.id, qa.id as answerid, title, qa.message 
      FROM `questions` q 
INNER JOIN questions_answers qa 
        ON q.id = qa.idquestion 
  GROUP BY q.id 
  ORDER BY q.id, answerid DESC
但它不能正常工作,它按问题ID分组,删除所有其他列消息,只留下第一条消息-因此order by是无用的


谢谢你的帮助。谢谢你的老问题。以下是解决方案:

就你而言:

SELECT q.id, qa.id as answerid, title, qa.message 
FROM questions q
JOIN questions_answers qa ON q.id = qa.idquestion
LEFT JOIN questions_answers qa2 ON qa.idquestion = qa2.idquestion AND qa.date < qa2.date
WHERE qa2.idquestion IS NULL

我们的想法是将问题分为两个操作:一个是从问题到答案的连接,然后使用MySQL文章中的方法。

您可以用不同的方法来处理它。您使用的是内部联接,这意味着您无论如何都不会显示没有答案的问题,因此请搜索按问题id分组的最大答案,然后联接问题表以获取标题

选择 q、 id,qa.id作为应答id,q.title,qa.message 从…起 问题q 内部连接问题\在q.id=qa.idquestion上回答qa,并在从问题\答案中选择最大id(其中idquestion=q.id)中回答qa.id 分组 q、 身份证 订购人 q、 id描述

我只想使用1个查询,不使用子查询。然后可能只使用解决方案和左连接!?我有两个不同的表,而不是那个例子中的一个。所以,我不知道怎么做。你能帮我查询一下吗?谢谢,因为我没有你的数据,所以我无法测试我的查询,但我在答案中添加了我的最佳猜测。你能将一些示例数据发布到表中,以准确显示你希望如何从存储的数据生成输出吗?例如,简单地删除GROUP BY现在似乎有效,但我认为这不是您最终想要的…如果我删除GROUP BY,我将得到所有答案。例如,如果我有一个问题有两个答案,我将有两行显示该问题,而不是一行。如果我有X个问题,我希望在执行查询时得到X行,因此只有最新的答案/问题,这对于qa.id来说很好,但是qa.message是错误的,仍然是第一个。例如,我想找到最后一个回复该消息的用户,最大值在这里不起作用,不,这将为qa.message提供任意消息,而不是最新的消息。我测试了,是的,消息被弄乱了,在这里,它与子查询一起起作用,但它没有AndreKR的:p那么漂亮