编写SQL查询以使版本低于授权版本

时间:2017-08-25 09:11:49

标签: mysql sql

我的表名XYZ有col。姓名: -

id(varchar),
Version(Number),
Authorize_state(Y/N),
Action(Save/Reset/Delete/... etc)

我必须让Authorize_state ='N'的所有版本低于Authorize_state ='Y'的版本 e.g。

Table
ID.   Version.     Authorize_state     Action
1A.     2.                 N.                      Save
1A.     3.                 N.                      Save
1A.     5.                 Y.                      Update
1A.     8.                 N.                      Reset
1B.     1.                 N.                       DO
1B.     3.                 Y.                      Accept
1B.     5.                 N.                      Save

1 - 所以现在我必须获得Id 1B的第一版和Id 1A的第2版和第3版 2 - 针对特定id的Y版本将始终是表中的一个。

请帮我写一个sql查询。

1 个答案:

答案 0 :(得分:1)

select
  id,
  min(version) min_v
from xyz
where Authorize_state='Y'
group by id

获取每个id的最小授权版本

select
  xyz.*
from xyz
  inner join (the query above) sub on xyz.id = sub.id and xyz.version<sub.version

然后加入原始表格,只留下最少只留下版本的版本