在经历了许多尝试和磨难后,我能够编写以下查询。
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.我想将该值发送到表单上的文本框。
谢谢
答案 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