这是我的问题:
SELECT dtljob.lj_jobnum, dtbom2.b2_id,dtbom2.b2_ljid
FROM dtbom2, dtljob
WHERE dtbom2.b2_ljid = dtljob.lj_id
ORDER BY dtbom2.b2_id DESC
以下是我的结果:
lj_jobnum b2_id b2_ljid
201302867 230 150
201302867 229 150
201302807 228 87
201302807 227 87
201402911 226 200
201402911 225 200
201403027 224 320
201403027 222 320
我的问题是我只想查看li_jobnum和b2_ljid的唯一记录,我需要得到结果order by b2_id desc
才能将最新记录放到结果的顶部。
根据上面的数据,我希望结果如下:
lj_jobnum b2_id b2_ljid
201302867 230 150
201302807 228 87
201402911 226 200
201403027 224 320
只要结果按b2_id desc排序,我的结果中我真的不需要b2_id。
如何更改查询以获得我需要的结果?
答案 0 :(得分:0)
假设您想要max b2_Id,聚合函数将起作用。这些都需要分组声明。我也使表格别名,使它们更容易阅读。
SELECT b.lj_jobnum, max(a.b2_id) max_b2_ID, a.b2_ljid
FROM dtbom2 a, dtljob b
WHERE a.b2_ljid = b.lj_id
GROUP BY b.lj_jobnum, a.b2_ljid
ORDER BY max_b2_ID desc
OR(使用更现代的连接语法)
SELECT b.lj_jobnum, max(a.b2_id) max_B2_ID, a.b2_ljid
FROM dtbom2 a
INNER JOIN dtljob b
ON a.b2_ljid = b.lj_id
GROUP BY b.lj_jobnum, a.b2_ljid
ORDER BY max_b2_id desc
答案 1 :(得分:0)
然后你需要使用聚合函数。您需要决定如何处理具有多个b2_id的情况 (201302867,150)你有2 b2_ids(229,230)
看起来你只想要2的最大值并订购它。
所以你的查询看起来像这样。
Select lj_jobnum, b2_ljid
from dtbom2, dtljob
Where dtbom2.b2_ljid = dtljob.lj_id
Group By lj_jobnum, b2_ljid
Order by Max(b2_id) Desc
Group By将在子句中创建不同的列集。您要在group by子句中使用的任何列都需要使用聚合函数。常见的是Max,Min,Avg,Count