千家信息网

指定一个ID找到上下的范围

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,倒是不复杂需求:实现思路:给定一个ID,比如272944如果表中的ID大于这个值,则自定义变量自增加一,如果表中的ID小于这个值,则用这个值减去表中ID,如果表中的ID等于这个值,则为0SELECTa
千家信息网最后更新 2024年10月21日指定一个ID找到上下的范围倒是不复杂
需求:


实现思路:
给定一个ID,比如272944
如果表中的ID大于这个值,则自定义变量自增加一,
如果表中的ID小于这个值,则用这个值减去表中ID,
如果表中的ID等于这个值,则为0

  1. SELECT
  2. a.ZpID,
  3. WHEN a.zpid - 272944 > 0 THEN @a:=@a + 1
  4. WHEN a.zpid - 272944 < 0 THEN a.zpid - 272944
  5. ELSE 0
  6. END AS rn
  7. FROM
  8. zp_audio_video a, (SELECT @a:=0) vars
  9. WHERE
  10. a.State = 1
  11. AND a.Labels LIKE '三周年站庆歌曲类%'
  12. ORDER BY a.Zpid

结果:


最后过滤找到结果:
  1. SELECT
  2. *
  3. FROM
  4. (
  5. SELECT
  6. a.ZpID,
  7. WHEN a.zpid - 272944 > 0 THEN @a:=@a + 1
  8. WHEN a.zpid - 272944 < 0 THEN a.zpid - 272944
  9. ELSE 0
  10. END AS rn
  11. FROM
  12. zp_audio_video a, (SELECT @a:=0) vars
  13. WHERE
  14. a.State = 1
  15. AND a.Labels LIKE '三周年站庆歌曲类%'
  16. ORDER BY a.Zpid
  17. ) a
  18. WHERE
  19. rn <= 5 AND rn != 0
  20. ORDER BY rn DESC
  21. LIMIT 10;




0