仅从查询返回最高记录(或第1行)

时间:2013-12-11 02:03:07

标签: sql sql-server

在经历了许多尝试和磨难后,我能够编写以下查询。

SELECT        repName.repID, repName.Rep_Name, Positions.Position, repName.Roster, DataSheet.ENTERED
FROM            DataSheet INNER JOIN
                             repName ON DataSheet.EE_ID = repName.repID INNER JOIN
                             Positions ON repName.Job_Code = Positions.Job_Code
WHERE        (DataSheet.ENTERED <= @ENTEREDEnd)
 GROUP BY repName.repID, repName.Rep_Name, Positions.Position, repName.Roster, DataSheet.ENTERED, DataSheet.ITEM_ASSIGNED
HAVING        (DataSheet.ENTERED >= @ENTEREDStart) AND (DataSheet.ITEM_ASSIGNED = @ITEM_ASSIGNED) AND (repName.Roster = N'YES')
 ORDER BY DataSheet.ENTERED

我仍然在摸索SQL,并且想知道是否可以修改此查询,以便它只返回顶部值或行1.我想将该值发送到表单上的文本框。

谢谢

3 个答案:

答案 0 :(得分:1)

要返回TOP N行,请使用以下

SELECT TOP (1)    /* rest of your query*/

您也可以将PERCENT与您的TOP Clause一起使用

SELECT TOP (10) PERCENT /* rest of your query*/

如果在TOP N中有相同的值,并且您希望所有行TOP相同的值,则可以使用类似

的值
SELECT TOP (N) WITH TIES /* rest of your query*/

答案 1 :(得分:1)

如果SQL CE使用此TOP(N)。您必须用括号括起数字。

在查询中使用Top N或Limit N将返回最旧的行,因为您使用

进行排序
ORDER BY DataSheet.ENTERED

如果您希望检索最新的行,请将您的排序设为

ORDER BY DataSheet.ENTERED desc

答案 2 :(得分:0)

取决于db flavor

mssql select top 1

最后的

mysql limit 1

oracle where rownum <=1