0

我只有基本的 SQL 技能。我在 Navicat 中使用 SQL。我查看了那些也试图获得最新日期但尚未能够将其应用于我的情况的人的线索。

我正在尝试获取每种化学物质的每个名称的最新日期。我是这样想的:“在每种化学品中,查看每个名称的数据,选择最近的一个。”

我尝试过使用max(date(date)),但它需要在化学中嵌套或子查询。

我也尝试过排名date(date) DESC,然后使用LIMIT 1. 但我也无法将其嵌套在化学物质中。

当我尝试将其编写为子查询时,我不断在(. 我已将其切换,以便我以多种不同的方式开始子查询,但错误总是在该区域附近返回。

以下是数据的样子: 1 这是我失败的查询之一:

SELECT
   WELL_NAME,
   CHEMICAL,
   RESULT,
   APPROX_LAT,
   APPROX_LONG,
   DATE

FROM
   data_all
ORDER BY
   CHEMICAL ASC,
   date( date ) DESC (
SELECT
   WELL_NAME,
   CHEMICAL,
   APPROX_LAT,
   APPROX_LONG,
   DATE 
FROM
   data_all 
WHERE
   WELL_NAME = WELL_NAME 
   AND CHEMICAL = CHEMICAL 
   AND APPROX_LAT = APPROX_LAT 
   AND APPROX_LONG = APPROX_LONG,

LIMIT 2 
)

如果有人确实有回应,最好用尽可能通俗的语言。我只有一个编码课。非常感谢。

4

2 回答 2

1

也许是这样的?

SELECT WELL_NAME, CHEMICAL, MAX(DATE)
FROM data_all
GROUP BY WELL_NAME, CHEMICAL
于 2017-07-10T22:28:45.650 回答
0

如果您想要所有信息,请使用 ANSI 标准ROW_NUMBER()

SELECT da.*
FROM (SELECT da.*
             ROW_NUMBER() OVER (PARTITION BY chemical, name ORDER BY date DESC) as senum
      FROM data_all da
     ) da
WHERE seqnum = 1;
于 2017-07-10T22:37:52.750 回答