MYSQL组最新日期

时间:2018-10-08 21:08:23

标签: mysql database

我重新提出这个问题,因为大多数示例中都有一些奇怪的表连接,这对我来说没有意义。我想做的是按日期(以Y-m-d格式)提取最近的邮件,但按邮件的日期将它们分组。

$query = "
SELECT * 
  FROM mail 
 WHERE ( receiver = '$username' OR sender = '$username' ) 
GROUP 
    BY date DESC
";

这是我的开始,但是我需要按日期提取最新值。有谁知道该怎么做,但仍然保留接收方和发送方限定符?

表结构:http://projecttranslation.org/cvlgbt/www/web/mail.pdf

2 个答案:

答案 0 :(得分:1)

大概是您想要最近日期的行。 这不是聚合查询!正在过滤:

SELECT m.*
FROM mail m
WHERE ? IN (m.receiver, m.sender) AND
      date = (SELECT MAX(m2.date)
              FROM mail m2
              WHERE (m2.receiver = m.sender AND m2.sender = ?) OR
                    (m2.sender = m.receiver AND m2.receiver = ?)
             );

请注意,我已将'$username'更改为参数(?)的适当占位符。您的版本看上去很危险,很难用字符串值来填充查询字符串-这会使查询进入SQL注入状态,并且可能会引入难以调试的语法错误。

答案 1 :(得分:1)

import { fooConfig } from '@foo\foo.config';
import { barConfig } from '@bar\bar.config';
import { bazConfig } from '@baz\baz.config';