我有一个查询应该为特定请求代码提取最高主键ID:
SELECT id
FROM [QTRA410].[Admin].[qt_request]
WHERE id IN (SELECT Max(id)
FROM [QTRAX4619410].[QTRAXAdmin].[qt_request])
AND requestcode = 'FOREMAN';
以下是表格中的当前数据:
然而,查询根本没有返回任何内容,我不明白为什么:
奇怪的是,当我搜索请求代码' JOB'它工作正常:
答案 0 :(得分:4)
试试这个:
SELECT id
FROM [QTRA410].[Admin].[qt_request]
WHERE id IN (SELECT Max(id)
FROM [QTRAX4619410].[QTRAXAdmin].[qt_request]
WHERE requestcode = 'FOREMAN')
答案 1 :(得分:2)
你的两个WHERE条件是取消id 40的资格.Max(id)的子SELECT每次都返回42。您的请求代码条件要求requestcode =" FOREMAN"。没有" FOREMAN" ID为42的请求代码。
答案 2 :(得分:2)
您的子选择未被请求代码过滤。我想你想要像
这样的东西SELECT id
FROM [QTRA410].[Admin].[qt_request]
WHERE id IN (SELECT Max(id)
FROM [QTRAX4619410].[QTRAXAdmin].[qt_request]
AND requestcode = 'FOREMAN')
;
或
SELECT id
FROM [QTRA410].[Admin].[qt_request] r
WHERE id IN (SELECT Max(id)
FROM [QTRAX4619410].[QTRAXAdmin].[qt_request] and requestcode = r.requestcode)
AND requestcode = 'FOREMAN';
答案 3 :(得分:1)
你也可以试试[QTRAX4619410]。[QTRAXAdmin]。[qt_request] doeos不包含请求代码:
<!DOCTYPE html>
<html ng-app="empApp">
<head>
<meta charset="utf-8" />
<title></title>
<script src="lib/angular/angular.js"></script>
<script src="lib/angular-resource/angular-resource.js"></script>
<script src="lib/angular-route/angular-route.js"></script>
<script src="app.js"></script>
</head>
<body>
<h1>Hello Angular JS</h1>
What is 2+2 ?
<br /><br />
Answer = {{2+2}}
<br /><br />
<ng-view></ng-view>
</body>
</html>
答案 4 :(得分:1)
with cte as (
SELECT id
, row_number() over (partition by reqeustcode order by id desc) as rn
FROM [QTRAX4619410].[QTRAXAdmin].[qt_request]
)
select *
from cte
where rn = 1
and requestcode = 'FOREMAN'
基本上,您按照每个请求代码以递减的id顺序枚举行,然后选择第一个(即最大的)。优化器可以很好地优化,但是你不会错误地思考它。