Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用MYSQL进行排序和分组?_Php_Mysql_Sql_Greatest N Per Group - Fatal编程技术网

Php 如何使用MYSQL进行排序和分组?

Php 如何使用MYSQL进行排序和分组?,php,mysql,sql,greatest-n-per-group,Php,Mysql,Sql,Greatest N Per Group,我有一张桌子 ----------------------------------- Date | Prefilling | Ref ----------------------------------- 10/10/2017 | 5 | dinesh 17/10/2017 | 8 | Ajay 07/05/2017 | 5 | Aarthi 01/01/2018

我有一张桌子

-----------------------------------
Date        |      Prefilling  |  Ref
-----------------------------------
10/10/2017  |       5          |  dinesh
17/10/2017  |       8          |  Ajay  
07/05/2017  |       5          |  Aarthi
01/01/2018  |       8          |  Kumar 
-----------------------------------
如何同时执行order by和group by? 我使用下面的查询,但它没有给出实际结果

  SELECT * FROM (  
        select * from table order by str_to_date(date,'%d/%m/%Y') DESC  
    ) AS tmp_table group by  Prefilling
我期待着结果,还有裁判

Array 
(
  [5] =>  10/10/2017, dinesh
  [8]  => 01/01/2018,  kumar
}

根据显示的结果,您希望获得每次预填充的最新日期。您可以使用MAX来实现这一点,并使用最大值对其进行排序

SELECT  Prefilling, MAX(STR_TO_DATE(`date`,'%d/%m/%Y')) AS MAX_DATE
FROM    TableName
GROUP   BY Prefilling
ORDER   BY MAX_DATE 
这里有一个

以下是根据您的更新问题得到的更新答案。您可以分别检索子查询中每个预填充的最新日期,并将结果与原始表本身连接,前提是它在两个条件(预填充和最新日期)上都匹配,以获取所有列

SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  Prefilling, MAX(str_to_date(date,'%d/%m/%Y')) AS MAX_DATE
            FROM     TableName
            GROUP   BY Prefilling
        ) b ON a.Prefilling = b.Prefilling
                AND str_to_date(a.date,'%d/%m/%Y') = b.MAX_DATE
ORDER   BY b.MAX_DATE

a

我想知道为什么要将日期存储为字符串,而从mysql的内置日期函数中查询存储数据会更容易。如果你还不太了解这一点,那么现在就改变你的设计还不算晚。@Bill你在php上很有天赋,如果你认为它可能是重复的,为什么不关闭它呢?编辑:-@FunkFortyNiner如果问题不是完全重复的话,我有时会犹豫是否结束。但你是对的,在这种情况下,这是一个经典的每组n个最大的问题。“已经有成百上千的问题得到了回答。”比尔,还有一个有趣的描述,就是这个标签;很好的选择。Soory@John Woo,我期待着与Ref一起输出。@Thirukumaran查看我的更新答案。@Thirukumaran你期待与Ref一起输出是什么意思??