gpt4 book ai didi

mysql - SELECT 从同一表中获取两个条目,按日期区分,在一行中

转载 作者:可可西里 更新时间:2023-11-01 08:22:18 28 4
gpt4 key购买 nike

我有一张表,其中保存着不同的仪表(水表、电表),而在另一张表中,我保存了每个仪表的读数。表结构是这样的:仪表台

MeterID | MeterType | MeterName

读数表:

ReadingID | MeterID | Index | DateOfReading

仪表的读数每月读取一次。我现在要做的是在一行中获取仪表信息、当前读数和先前读数。因此,如果我有一个查询,将产生以下行:

MeterID | MeterType | MeterName | CurrnetIndex | LastIndex

到目前为止我有以下查询:

SELECT Meter.MeterID, Meter.MeterType, Meter.MeterName, CurrentReading.Index, PreviousReading.Index
FROM Meters AS Meter
LEFT OUTER JOIN Readings AS CurrentReading ON Meter.MeterID = CurrentReading.MeterID
LEFT OUTER JOIN Readings AS PreviousReading ON Meter.MeterID = PreviouseReading.MeterID
WHERE CurrentReading.ReadingID != PreviousReading.ReadingID AND DIMESTAMPDIFF(MONTH, CurrentReading.DateOfReading, PreviousReding.DateOfReading)=-1

问题是我可能没有当前读数或之前读数,或两者都没有,但我仍然需要检索仪表信息。我完全可以接受 NULL 列,但我仍然需要一行 :)

最佳答案

使用:

   SELECT m.meterid,
m.metertype,
m.metername,
current.index,
previous.index
FROM METER m
LEFT JOIN READING current ON current.meterid = m.meterid
AND MONTH(current.dateofreading) = MONTH(NOW())
LEFT JOIN READING previous ON previous.meterid = m.meterid
AND MONTH(current.dateofreading) = MONTH(NOW())-1

作为 OUTER JOIN - 如果 MONTH 过滤是在 WHERE 子句中完成的,它会产生与在 ON 子句中完成的结果不同的结果。

关于mysql - SELECT 从同一表中获取两个条目,按日期区分,在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4060708/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com