【问题标题】:MYSQL Query that get different values using a condition使用条件获取不同值的 MYSQL 查询
【发布时间】:2015-01-28 10:28:12
【问题描述】:

我正在寻找这样的东西:

  • forum_reply(id、文本、数据、帖子、用户)
  • forum_post(id、标题、文本、部分、数据、用户)

Post、User 和 Section 是外键。

我会显示我所在部分的所有帖子(我将使用 WHERE Section = '".$_GET['section']."' ,我正在使用 PHP),订购根据数据,但是:

  • 如果帖子没有得到回复,请使用帖子数据订购该帖子
  • 如果帖子有超过 0 条回复,请使用最后回复的数据订购该帖子

我的最终结果将是一个表,其中所有帖子行都按我首先指定的数据排序。像这样:

  • 发布 1 | 0 回复 |帖子数据:19/12/2014 13:00 -> 获取帖子数据
  • 发布 2 |回复> 0,最后回复的数据:19/12/2014 14:00 |帖子数据:19/12/2014 13:15 -> 获取上次回复的数据
  • ecc..

之后显示如下:

  • POST 2 (19/12/2014 14:00)
  • 发布 1(19/12/2014 13:00)

我真的做不到;真的需要你的帮助!非常感谢。

【问题讨论】:

    标签: mysql if-statement


    【解决方案1】:

    如果没有回复,您可以使用ifnull 函数来使用发布日期。

    select *
    from forum_post
    where Section=@Section
    order by ifnull((
        select max(Data)
        from forum_reply
        where Post=forum_post.id
    ),Data) desc
    

    【讨论】:

    • 非常感谢伙计,你救了我的大脑!我从来没有听说过这个功能。谢谢你的生活。
    猜你喜欢
    • 2012-12-07
    • 2012-09-06
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    相关资源
    最近更新 更多