sql根据最新的外键日期字段选择单行

时间:2013-02-06 11:29:23

标签: sql hibernate

我有两个sql表,alarmMessagecoordinatesalarmMessage表具有coordinates表的外键字段。我想从alarmMessage表中检索单行,其中坐标的坐标是最新的(最大)gpsDate字段。

alarmMessage:

CREATE TABLE alarmmessage
(
  alarmmessageid bigint NOT NULL,
  mtstrackid character varying(40),
  coordinatesid bigint,
  totaldistance double precision,
  iostatusid bigint,
  alarmstatus character varying(10),
  totalworkingduration integer,
  maintenanceremainingtime integer,
  isread boolean NOT NULL DEFAULT false,
  CONSTRAINT pk_alarmmessageid PRIMARY KEY (alarmmessageid ),
  CONSTRAINT fk_coordinatesid FOREIGN KEY (coordinatesid)
      REFERENCES coordinates (coordinatesid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_iostatus FOREIGN KEY (iostatusid)
      REFERENCES iostatus (iostatusid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk_mtstrackid FOREIGN KEY (mtstrackid)
      REFERENCES vehicle (mtstrackid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

坐标:

CREATE TABLE coordinates
(
  coordinatesid bigint NOT NULL,
  latitude double precision NOT NULL,
  longitude double precision NOT NULL,
  gpsvalid boolean,
  gpsdate timestamp without time zone,
  bearingangle double precision,
  speed double precision,
  mtstrackid character varying(40),
  altitude double precision,
  CONSTRAINT pk_coordinates PRIMARY KEY (coordinatesid )
)

1 个答案:

答案 0 :(得分:0)

您可以使用以下SQL:

SELECT alarmmessage.* FROM alarmmessage
INNER JOIN coordinates ON alarmmessage.coordinatesid = coordinates.coordinatesid
ORDER BY gpsdate DESC
LIMIT 1