2009-07-31 2 views
3

Я ищу, чтобы вернуть строку с самым большим create_dt. Это прекрасно работает, однако я хотел бы знать, есть ли более правильный способ сделать это?Есть ли лучший способ написать этот SQL-запрос?

select * from 
table1 
where job_no='101047' 
and 
create_dt in 
    (select max(create_dt) from  
     table1 where job_no='101047') 
+2

Вы не упомянули, какую технологию БД. – RichardOD

+1

Извините, я использую msSQL. – jr3

ответ

15

Как насчет:

Select top 1 * 
from table1 
where job_no = '101047' 
order by create_dt desc 
+0

Выберите верх 1 * из таблицы 1, где job_no = '101047' закажите по create_dt desc – msvcyc

+0

спасибо. Похоже, я исправился, прежде чем у тебя появилась возможность исправить меня. :) – Dusty

+0

+1 Мне это нравится, я могу получить минимальную дату, используя asc. Спасибо, сэр. Есть только что-то о вложенных запросах, которые мне не нравятся. – jr3

4

Ваш запрос будет возвращать более одного значения, если есть более чем один ряд create_dt
где job_no = «101047»

Это будет работать лучше

Select top 1 * from table1 
where job_no='101047' 
order by create_dt desc