SQL WHERE + MAX запрос - PullRequest
       4

SQL WHERE + MAX запрос

0 голосов
/ 01 февраля 2020

Я пытаюсь получить строку из SQL дБ, которая удовлетворяет двум условиям:

1) Значение 1 == 'A'

AND

2 ) дата МАКС.

----------------------------------------------
|                 Log                        |
----------------------------------------------
|  date   |     value 1     |     Value 2    |
----------------------------------------------
|  1000   |        A        |       C        |
|  1100   |        A        |       C        |
|  1200   |        B        |       C        |
----------------------------------------------

Я могу получить максимальное значение с помощью следующего запроса:

SELECT *
FROM log
INNER JOIN(
   SELECT MAX(date) date 
   FROM log
)MaxDate
ON MaxDate.date = log.date

Как добавить 1-е условие в этот запрос?

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Используйте order by и ограничьте одной строкой:

select l.*
from logs l
where l.value = 'A'
order by l.date desc
fetch first 1 row only;

Не все базы данных поддерживают fetch first. Это может быть, например, limit или top (1).

0 голосов
/ 01 февраля 2020

Предполагая, что вам нужна строка, в которой дата составляет максимум среди строк со значением 1 = 'A', следующее должно работать на всех СУБД и легко настраиваться:

SELECT *
FROM log
INNER JOIN(
   SELECT value1, MAX(date) date 
   FROM log
   GROUP BY value1
) MaxDate
ON MaxDate.date = log.date and MaxDate.value1 = log.value1
WHERE log.value1 = 'A'
...