2012-10-02 5 views
1

je la requête TSQL suivante:TSQL montrent que première ligne

SELECT DISTINCT MyTable1.Date 
    FROM MyTable1 
INNER JOIN MyTable2 
ON MyTable1.Id = MyTable2.Id 
WHERE Name = 'John' ORDER BY MyTable1.Date DESC 

Il récupère une longue liste de dates, mais je ne ai besoin le premier, celui de la première rangée.

Comment puis-je l'obtenir?

Merci beaucoup!

Répondre

8

Dans SQL Server, vous pouvez utiliser TOP:

SELECT TOP 1 MyTable1.Date 
FROM MyTable1 
INNER JOIN MyTable2 
    ON MyTable1.Id = MyTable2.Id 
WHERE Name = 'John' 
ORDER BY MyTable1.Date DESC 

Si vous devez utiliser DISTINCT, vous pouvez utiliser:

SELECT TOP 1 x.Date 
FROM 
(
    SELECT DISTINCT MyTable1.Date 
    FROM MyTable1 
    INNER JOIN MyTable2 
    ON MyTable1.Id = MyTable2.Id 
    WHERE Name = 'John' 
) x 
ORDER BY x.Date DESC 

Ou encore:

SELECT MAX(MyTable1.Date) 
FROM MyTable1 
INNER JOIN MyTable2 
    ON MyTable1.Id = MyTable2.Id 
WHERE Name = 'John' 
--ORDER BY MyTable1.Date DESC 
+0

@ user523129 selon sur ce dont vous avez besoin, vous pouvez utiliser 'MAX()' puisque vous ne renvoyez qu'une valeur de date. – Taryn