$threads = mysql_query("SELECT DISTINCT t.id, t.title
                        FROM threads t LEFT JOIN comments c ON t.id = c.parentID
                        ORDER BY c.date DESC");

while ($thread = mysql_fetch_assoc($threads)) {

 echo "<li><a href=\"?threadID=$thread[id]\">".htmlspecialchars($thread['title'])."</a></li>\n";

}

任何人都可以在此代码中看到问题吗? 它不会像我想要的那样工作。 我想要它在最前面被评论的线程,以及在下一个最新被评论的线程。

echo $ thread [parentID]不回声

评论:
id,评论,parentID,日期

#1楼 票数:2 已采纳

您正在按不在DISTINCT列表中的一列进行排序。

这在MySQL是有效的语法,但是此ORDER BY没有意义。

此语法是MySQL扩展 ,此查询将在四大类的任何其他RDBMS引擎中失败。

它被用来简化DISTINCTGROUP BY在箱子查询时的相同的值columnSELECTORDER BY总是对应于列的相同值GROUP BYDISTINCT

如果你的情况,你可以有多个值c.date的每个值t.id ,且其价值c.date将选择ORDER BY远未得到保证(也可以是最后一个值,第一个值或任何其他值)。

将查询重写为:

SELECT  t.id, t.title,
        (
        SELECT  c.date
        FROM    comments c
        WHERE   c.parent_id = t.id
        ORDER BY
                c.date DESC
        LIMIT 1
        ) lastcomment
FROM    threads t
ORDER BY
        ISNULL(lastcomment), lastcomment

#2楼 票数:0

尝试在MySQL查询浏览器中对数据运行查询,并查看是否返回任何结果。 如果是这样,那么问题出在您的回声,而不是您的查询。

#3楼 票数:0

我已经有一段时间没有使用MySQL了,所以我知道这在tSQL中有效。 您可以尝试:

SELECT DISTINCT t.id, t.title
FROM threads t LEFT JOIN comments c ON t.id = c.parentID AND 
c.id = (SELECT MAX(c.id) FROM comments where comments.parentID = t.id)
ORDER BY c.date DESC

注释中有很多行,这很容易使速度变慢。 如果您发现性能问题,可以在线程中存储最近的评论日期,这可能是有道理的。

#4楼 票数:0

我尝试了这个,它按照您想要的方式工作

SELECT DISTINCT t.id, t.title FROM threads AS t LEFT JOIN comments AS c ON t.id = c.parent_id ORDER BY c.date DESC

我更改的唯一真实的东西是使用

从线程AS T

#5楼 票数:-1

我不确定您要实现的目标,但是如果您想回显parentID,则需要在查询中包括它。

$threads = mysql_query("SELECT DISTINCT t.id, t.title, c.parentID
                        FROM threads t LEFT JOIN comments c ON t.id = c.parentID
                        ORDER BY c.date DESC");

  ask by translate from so

未解决问题?本站智能推荐:

2回复

加入帮助

我认为加入时需要帮助。 无法解决。 我有这些表: 帖子 帖子标签 标签 如果我想用标记team-fortress-2圈出所有帖子,那该怎么办? 我不知道。
3回复

MYSQL加入帮助。 根据单独评论表中的评论数量获得结果?

初学者来了! 我正在尝试编写一个查询,它将从“结果”表中选择3个评论最多的结果,注释存储在单独的“注释”表中。 所以我需要从结果中选择所有,并按results.id和comments.result_id之间的匹配数量排序,但我真的不知道从哪里开始! 非常感谢您的帮助,非常感谢!
1回复

如何加入不同的表?

我尝试搜索相关的查询语句并应用但不起作用。 我试图在一个GET调用中加入我的api的所有表,但我无法执行它。 查询失败并得到错误。 对于我显示的表,我的查询看起来像这样。 我想加入所有桌子的奖励和运输,奖励项目之间存在一对多的关系,运输的奖励也一对多。 如何在一个查
4回复

加入3个三桌

我有这个图可以解释我的情况我需要帮助加入3个表,我不知道如何做这种事情: 所以我可以通过执行以下操作来检索记录的while循环:
2回复

帮助mysql加入

我可以通过MySQL JOIN获得一些帮助吗? 基本上我有4个表,交易员,街道帐户(与交易者相关),recommendation_brokerages和推荐。 我需要从交易者表中获取所有交易者姓名和电子邮件地址,其中交易者streetaccount.brokerage_id存在于reco
1回复

MYSQL根据日期选择,然后加入

我有两个表,一个表有一个事件列表,其中包含事件的各种详细信息。 我还有第二张表,其中包含与活动链接的票证和特定的票证信息(座位号,区号,价格等)。 显然,一个事件可能有几张票。 我想这样做是JOIN的events与表tickets表BY的events_id (事件表的主键,并没有在
2回复

加入才能识别仅注册的组?

我正在尝试选择在成员表中指定的用户已注册的组,并在用户所属的所有组的一页上显示更新,但是每次它不断显示来自每个组的更新时创建,即使他们不是成员。 因此,如何确保仅显示用户加入这些更新的组? 到目前为止,这是我的查询: 以前从未做过SQL连接,所以这就是原因。
2回复

如何加入所有表格?

我是一名新程序员,我不知道该怎么做。 我有: 一个名为customers的表(cust_id,name) 一个名为agents的表(agent_id,agent_name) 一个名为authorizations的表(cust_id,agent_id) 名为