Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Mysql 多个最大结果_Mysql_Sql - Fatal编程技术网

Mysql 多个最大结果

Mysql 多个最大结果,mysql,sql,Mysql,Sql,表结构 id (p) | date | id2 (fk) | id3 (fk) 其中(p)是主id,(fk)是外键 此查询返回最新唯一行的列表 select max(date) as date1, id1, id2 from `table` group by id1, id2 我还想连续第二次约会,这必须是第二个最高的日期 差不多 select max(date) as date1, max_second(date) as date2, id1

表结构

id (p) | date | id2 (fk) | id3 (fk)
其中(p)是主id,(fk)是外键

此查询返回最新唯一行的列表

select
    max(date) as date1,
    id1,
    id2
from `table`
group by id1, id2
我还想连续第二次约会,这必须是第二个最高的日期

差不多

select
    max(date) as date1,
    max_second(date) as date2,
    id1,
    id2
from `table`
group by id1, id2

将表连接到自身,匹配id列,但(这是关键)匹配被连接表的行的日期小于主表的行

select
    max(t1.date) as date1,
    max(t2.date) as date2,
    t1.id2,
    t1.id2
from `table` t1
left join `table` t2 on t2.id1 = t1.id1 and t2.id2 = t1.id2 and t2.date < t1.date
group by id1, id2;
如果速度不够快,请在运行以下命令后尝试速度:

create index table_id1_id2_date on `table`(id1, id2, date);

行得通,谢谢。虽然完成这个查询几乎要花上一辈子的时间……但现在它就像火箭一样)再次感谢
create index table_id1_id2_date on `table`(id1, id2, date);