我的表格“batchno
”包含8999行,batchno
代表ID为7434。
我希望DISTINCT batcho
用于此表。对于所有DISTINCT batchno
我有47行。
对于每个batchno
我想获得MAX(ID),但是每行。
我的问题是:我如何为每个DISTINCT SELECT DISTINCT batchno,
(SELECT MAX(id) AS Expr1
FROM batchtracing) AS id
FROM batchtracing AS batchtracing_1
WHERE (contentid = '7434')
我尝试了这个但不是我的解决方案,这使我在列id处为所有行提供了相同的值。
Step 1: SELECT DISTINCT batchno, batchstatus FROM batchTracing WHERE (contentid = " & contentid & ") AND (batchstatus = 'active') ORDER BY batchno
Step 2:SELECT MAX(id) AS Expr1 FROM batchTracing WHERE (batchno = '" & batchno & "') AND (contentid = '" & contentid & "')
Step 3: SELECT batchstatus FROM batchtracing WHERE id = batchTracingID
为了得到我需要的东西我使用3个查询,但我只想要一个因为慢慢来。 我现在做什么:
{{1}}
这个方法非常慢,我想只需要一个查询就能得到这一切。
答案 0 :(得分:2)
使用rownumber:
Select b.*
From (select b.*, row_number() over (partition by batchno order by id desc) as seqnum
From batchtracing
) b
Where seqnum = 1
答案 1 :(得分:2)
您过度复杂 - 您只需要按批号分组
phantomjs
如果contentid是数字列,则应删除第7434号报价,以避免不必要的转化。
答案 2 :(得分:1)
听起来你想使用GROUP BY
。
select batchno, max(id)
from batchtracing
where contentid = 7434
group by batchno
答案 3 :(得分:1)
如果我正确理解您的问题,您只需使用C-x k
:
GROUP BY
答案 4 :(得分:1)
SELECT batchno,max(Id) 来自batchTracing Where ContentId ='7434' GROUP BY batchno