Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中选择最新插入的记录_Sql_Sql Server - Fatal编程技术网

在SQL Server中选择最新插入的记录

在SQL Server中选择最新插入的记录,sql,sql-server,Sql,Sql Server,我的表有SubId、QId、Question、AnswerOptions和Ans。SubId是外键,QId是主键。我需要的是选择最新插入的记录并将其显示在文本框中 我已经试着回答这些问题了 SELECT * FROM tblQuestions SELECT SCOPE_IDENTITY () SELECT MAX(QId) FROM tblQuestions SELECT TOP 1 QId FROM tblQuestions ORDER BY QId DESC 但是我得

我的表有SubId、QId、Question、AnswerOptions和Ans。SubId是外键,QId是主键。我需要的是选择最新插入的记录并将其显示在文本框中

我已经试着回答这些问题了

SELECT * FROM tblQuestions 
 SELECT SCOPE_IDENTITY ()


SELECT MAX(QId) FROM tblQuestions


 SELECT TOP 1 QId 
 FROM tblQuestions 
 ORDER BY QId DESC
但是我得到了第一条记录,当我第一次插入时,我尝试了MAX,它显示值1,我尝试了MIN,它也显示值1。如何获取最新值


注意:最新的值是QId的最大值。

因为Qld是varchar类型,所以这应该可以工作:

SQL Server:

SELECT TOP 1 *
FROM tblQuestions
ORDER BY Qld ASC
MySQL:

SELECT Qld FROM tblQuestions
ORDER BY Qld ASC
LIMIT 1
MS访问:

SELECT LAST(Qld) 
FROM tblQuestions
研究:

从该表中获得上一个插入记录id的具有Identity属性的表如下所示

SELECT SCOPE_IDENTITY()
试试这个会有用的

;WITH x AS 
(
    SELECT 
        *, r = RANK() OVER (ORDER BY QId DESC)
   FROM tblQuestions
)
SELECT * 
FROM x 
WHERE r = 1;

它不应该起作用。QId是Varchar50。但我插入了1,2,3。。。当我尝试此查询时,得到值1。非最大值或上次插入值使用“从tblQuestions中选择TOP 1*”,Qld DESC的订单应起作用。你确定表中的数据比初始数据多吗?我刚刚重新创建并测试了它,并根据Qld ASC的工作顺序进行了更改。更新答案这是有效的;x为SELECT*,r=按QId DESC从TBLQUESTIES SELECT*从x排序,其中r=1;此表有SubId、QId、Question、AnsOption和Ans列。SubId有外键。否,当我使用此函数时,我得到第一行。欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!下次我会成功的
;WITH x AS 
(
    SELECT 
        *, r = RANK() OVER (ORDER BY QId DESC)
   FROM tblQuestions
)
SELECT * 
FROM x 
WHERE r = 1;
WITH get AS 
(
   SELECT 
     *, row = ROW_NUMBER OVER (ORDER BY qid DESC)
  FROM tbl
)
SELECT * 
FROM get 
WHERE row = 1;