Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 按日期和组ID获取表的最新记录_Mysql_Sql - Fatal编程技术网

Mysql 按日期和组ID获取表的最新记录

Mysql 按日期和组ID获取表的最新记录,mysql,sql,Mysql,Sql,您好,我有一个问题,就是如何通过使用max(Date)输出“reading_timesent”的最新数据,并且还包括另一列最新日期,并使用distinct或group删除冗余数据。我不知道我的问题是什么,这是示例img和数据 患者表 阅读表 内部联接表 预期产出 试试这个 SELECT * FROM ( SELECT *, ( SELECT reading_ID FROM Reading WHERE Reading.pati

您好,我有一个问题,就是如何通过使用max(Date)输出“reading_timesent”的最新数据,并且还包括另一列最新日期,并使用distinct或group删除冗余数据。我不知道我的问题是什么,这是示例img和数据

患者表 阅读表 内部联接表 预期产出

试试这个

SELECT * FROM
(
    SELECT *,
    (
        SELECT reading_ID 
        FROM Reading 
        WHERE Reading.patient_ID = p.patient_ID 
        ORDER BY reading_timesent DESC
        LIMIT 1
     ) AS newestReadingID
     FROM Patients p
) AS subquery
JOIN Reading ON subquery.newestReadingID = Reading.reading_ID

可以对ON子句中的条件使用相关子查询:

SELECT *
FROM Patients P
INNER JOIN Reading R
  ON  R.patient_ID = P.patient_ID
  AND R.reading_timesent = (
          SELECT MAX(R2.reading_timesent)
          FROM Reading R2
          WHERE R2.patient_ID = P.patient_ID
      )
另一种方式:

SELECT P.*, R.*
FROM (
  SELECT patient_ID, MAX(reading_timesent) as reading_timesent
  FROM Reading
  GROUP BY patient_ID
) X
JOIN Patients P USING (patient_ID)
JOIN Reading  R USING (patient_ID, reading_timesent)

对于类似的任务,我通常使用AUTO_INCREMENT列而不是TIMESTAMP列。但这并不总是适用。

请在问题中包含您的数据。没有人可以/应该打开这些链接。只需在查询的末尾通过阅读_timesentdesc下订单,您就可以开始了。我想获得最新的“reading\u timesent”并且还可以得到另一列reading@the.salman.a不,我想获取最新发送时间,并删除冗余数据。我已经这样做了,但我还想包括读取日期,如读取温度、读取氧气、读取脉冲,但它们可能不同。您希望显示哪一个数据,并遵循哪些规则?您所做的查询是正确的,因为它输出最新的读数时间,但添加了另一列读数温度、读数氧浓度、读数脉冲数好的,我想我理解您的意思。尝试编辑。您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“1 reading\u ID FROM reading WHERE reading.patient\u ID=Patients”的正确语法。第5nc行的简单回答我也喜欢,它要短得多;-)
SELECT P.*, R.*
FROM (
  SELECT patient_ID, MAX(reading_timesent) as reading_timesent
  FROM Reading
  GROUP BY patient_ID
) X
JOIN Patients P USING (patient_ID)
JOIN Reading  R USING (patient_ID, reading_timesent)