我有以下TSQL查询:

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

它检索一长串的日期,但是我只需要第一个,即第一行中的一个。

我怎么才能得到它?

万分感谢!

最佳答案

在SQL Server中,您可以使用 TOP :

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

如果需要使用DISTINCT,则可以使用:
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

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

10-08 15:56