Mysql 为每个id选择最近的行

Mysql 为每个id选择最近的行,mysql,Mysql,我有以下两个表一个是主表,第二个是明细表。 我需要详细信息表中最近的行,若详细信息表并没有相应行的详细信息,那个么它应该显示该id的空行和主表信息 我使用了下面的查询,但它没有给出所需的输出 select st.Station_Id,st.id,st.StationType,st.stationname,st.Latitude,st.Longitude, max (pump.LastUpdate) 作为最新更新,每日抽水,从sgwebdb站抽水,水位为st 左外连接sgwebdb.pump\

我有以下两个表一个是主表,第二个是明细表。 我需要详细信息表中最近的行,若详细信息表并没有相应行的详细信息,那个么它应该显示该id的空行和主表信息

我使用了下面的查询,但它没有给出所需的输出

select st.Station_Id,st.id,st.StationType,st.stationname,st.Latitude,st.Longitude, max  (pump.LastUpdate)
作为最新更新,每日抽水,从sgwebdb站抽水,水位为st 左外连接sgwebdb.pump\u station\u数据作为st.station\u id上的泵=pump.station\u id 其中st.DeletionDate为null,st.stationtype='泵站' 按st.station_id分组

主表-站点

ID Station\u ID StationType StationName Lattude经度

1泵0泵站ABC 5.555 100.4578 2泵1泵站DEF 5.555 100.4578 3泵2泵站GHI 5.555 100.4578 4泵3泵站JKL 5.555 100.4578 5泵4泵站MNO 5.555 100.4578 6泵5泵站PQR 5.555 100.4578 7泵6泵站STU 5.555 100.4578 8泵7泵站VXY 5.555 100.4578 9泵8泵站ZAB 5.555 100.4578 10泵9泵站CDE 5.555 100.4578 11泵10泵站FGH 5.555 100.4578 12泵11泵站IJK 5.555 100.4578 13泵12泵站LMN 5.555 100.4578 14泵13泵站OPR 5.555 100.4578 15泵14泵站QST 5.555 100.4578 16泵15泵站UVW 5.555 100.4578

明细表名称:泵站数据`

id    Station_id    lastupdate      hrl_abst daily_abst Water_Level
3   Pump15  2014-05-13 12:45:00 23  45      8
4   Pump0   2014-05-20 01:01:00 1   1       1
5   Pump0   2014-07-02 12:00:00 15.41   15.41       51.95
6   Pump0   2014-07-03 12:00:00 0.9 21.6        26.65
7   Pump1   2014-07-03 01:30:00 0   0       21.69
8   Pump0   2014-07-05 09:20:00 20  20      26.7535
9   Pump1   2014-07-05 11:25:00 20  20      21.69
10  Pump2   2014-07-05 15:10:00 20  20      9.4287
11  Pump3   2014-07-05 15:45:00 20  20      6.2608
12  Pump4   2014-07-05 13:25:00 20  20      2.2636
13  Pump5   2014-07-05 16:31:00 20  20      2.2832
14  Pump6   2014-07-05 16:38:00 20  20      2.1249
15  Pump7   2014-07-05 17:35:00 20  20      10
16  Pump8   2014-07-05 17:35:00 20  20      10
17  Pump9   2014-07-05 19:36:00 20  20      2.0994
18  Pump10  2014-07-05 19:55:00 20  20      2.112
19  Pump11  2014-07-05 20:15:00 20  20      2.1054
20  Pump12  2014-07-05 19:45:00 20  20      2.099
21  Pump13  2014-07-05 18:45:00 20  20      2.0994
22  Pump14  2014-07-05 16:45:00 20  20      10
23  Pump15  2014-07-05 16:45:00 20  20      2.1234
24  Pump16  2014-07-05 19:45:00 20  20      10
25  Pump17  2014-07-05 18:25:00 20  20      52.5678
26  Pump18  2014-07-05 18:50:00 20  20      42.0116
27  Pump19  2014-07-05 14:20:00 20  20      10
尝试以下sql:

select * from pump_station_data
where id in  (
    select max(id) from pump_station_data group by Station_id
)
order by Station_id;
对于第二个请求,请尝试以下操作:
我假设您的主表为“station”,该表中station id的列名为“station\u id”

尝试以下sql:

select * from pump_station_data
where id in  (
    select max(id) from pump_station_data group by Station_id
)
order by Station_id;
对于第二个请求,请尝试以下操作:
我假设您的主表为“station”,该表中station id的列名为“station\u id”

尝试以下sql:

select * from pump_station_data
where id in  (
    select max(id) from pump_station_data group by Station_id
)
order by Station_id;
对于第二个请求,请尝试以下操作:
我假设您的主表为“station”,该表中station id的列名为“station\u id”

尝试以下sql:

select * from pump_station_data
where id in  (
    select max(id) from pump_station_data group by Station_id
)
order by Station_id;
对于第二个请求,请尝试以下操作:
我假设您的主表为“station”,该表中station id的列名为“station\u id”



THX用于查询它正在工作。我需要一个更多的东西,我有一个主站表,我需要加入QueRe.基本上,这是站的主表。因此,如果任何泵站在上面表中没有值,那么它将从站表获取主细节并显示空白行。我们能做到吗?@ VIM是的,我想是这样,您可以通过sql或程序来完成,如果通过sql检查更新的答案,基本思想是使用right join,它将选择正确表中的任何行-Station.,它在“right”关键字附近给出错误。表示意外的right,并期望结束_Input@vim你在用什么数据库?@Vim我错了,join子句应该在where子句之前,请尝试更新后的sql.,thx查询它正在工作。我还需要一件事,我有一个站长站,从那里我需要加入Queer.基本上这是站长的表.所以如果任何一个泵站在上面的表中没有值,那么它将从站表中获取主数据并显示空白行.我们能做到吗?@ VIM是的,我想,你可以用SQL或程序来做,如果用SQL检查更新的答案,基本思想是使用right join,它将选择右侧表-Station中的任何行。它在“right”关键字附近给出错误。表示意外的right和预期的END__Input@vim您使用的是什么数据库?@Vim我的错误,join子句应该在where子句之前,请尝试更新的sql。,THX用于查询它正在工作。我需要一个更多的东西,我有一个站的主表,我需要加入QueRe.基本上,这是站的主表。所以如果任何一个泵站在上面的表中没有值,那么它将从站表中获取主细节并显示空白行。我们能做到吗?@ VIM是的,我想是这样。您可以通过sql或程序来完成,如果通过sql检查更新的答案,基本思想是使用right join,它将选择正确表中的任何行-Station.,它在“right”关键字附近给出错误。表示意外的right,并期望结束_Input@vim你在用什么数据库?@Vim我错了,join子句应该在where子句之前,请尝试更新后的sql.,thx查询它正在工作。我还需要一件事,我有一个站长站,从那里我需要加入Queer.基本上这是站长的表.所以如果任何一个泵站在上面的表中没有值,那么它将从站表中获取主数据并显示空白行.我们能做到吗?@ VIM是的,我想,你可以用SQL或程序来做,如果用SQL检查更新的答案,基本思想是使用right join,它将选择右侧表-Station中的任何行。它在“right”关键字附近给出错误。表示意外的right和预期的END__Input@vim你在用什么数据库?@Vim我错了,join子句应该在where子句之前,尝试更新的sql。请学习以良好的格式编辑问题,以便更多的人愿意回答,stackoverflow格式的使用很差,但使用起来却很简单。@flybird我正确地编辑了它,但在提交了所有格式之后,它以奇怪的格式出现了。有时我认为stackoverflow也可以改进编辑器。@flybird是的,绝对正确,这个编辑器有很多问题……请学习以良好的格式编辑问题,为了让更多的人愿意回答这个问题,stackoverflow格式的使用很差,但使用起来却很简单。@flybird我把它做得很好,但是在提交了所有的格式之后,它以奇怪的格式出现了。有时我认为stackoverflow可以提高