如何选择最大日期?

时间:2017-02-02 15:35:17

标签: php

我的代码是

function lister($a,$con){
    $queryq = " SELECT * FROM note WHERE date= MAX(date)  AND id='".$a."' AND admin='".$_SESSION['login_username']."' ";
    $resultq = mysqli_query($con,$queryq) or die('Error: ' . mysqli_error($con));
    $arrayq=mysqli_fetch_array($resultq,MYSQL_NUM); {
        echo $arrayq[4];
    }
}

有一个错误:

  

错误:无效使用群组功能

我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试拆分查询

         $queryA = "SELECT date FROM `note` WHERE id='".$a."' AND admin='".$_SESSION['login_username']."' ORDER BY date DESC LIMIT 1";
         $resultA = mysql_query($con, $queryA);
         $maxDatePerUser = mysql_fetch_array($resultA);
         $queryq = " SELECT * FROM note WHERE id='".$a."' AND admin='".$_SESSION['login_username']."' AND date='" . $maxDatePerUser["date"] ."'";
         $resultq = mysqli_query($con,$queryq) or die('Error: ' . mysqli_error($con));
         $arrayq=mysqli_fetch_array($resultq,MYSQL_NUM); {

答案 1 :(得分:0)

问题是由各种循环引用引起的。

SELECT * FROM note WHERE date= MAX(date)  AND id='".$a."' AND admin='".$_SESSION['login_username']."' "

你要求函数根据同样的事情来计算某些东西 - 语句的条件是MAX(日期),但是在它知道它是什么之前它无法计算。

最佳解决方案是分别找到MAX(日期):

SELECT max(date) FROM note

如果必要,您可以添加其他限制,如果它是最大日期WHERE,即

SELECT max(date) FROM note WHERE id='".$a."' AND admin='".$_SESSION['login_username']."' "

一旦你有了这个,你可以在查询中弹出它:

SELECT * FROM note 
   WHERE date = (SELECT max(date) 
                  FROM note 
                  WHERE id = '" . $a . "' 
                  AND admin = '" . $_SESSION['login_username'] . "')  
   AND id = '" . $a . "' 
   AND admin = '" . $_SESSION['login_username'] . "';

很难在没有要测试的数据的情况下100%正确地进行查询,但这应该有效。