首页 > 解决方案 > MySQL 查找值序列中的缺失间隙

问题描述

我在 mysql 中尝试过将缺失的空白添加到列表中,但我不知道如何。

我的数据是:

Cuenta
----------
A01
A02
A03
A05
A08
A10

我需要得到以下结果:

Cuenta
----------
A04
A06
A07
A09

谢谢!

标签: mysql

解决方案


SELECT A.val
FROM (
    SELECT CONCAT('A', LPAD((@var_i := @var_i + 1), 2, 0)) val
    FROM (SELECT @var_i := 0) A0
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A1 -- 2^1
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A2 -- 2^2
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A3 -- 2^3
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A4 -- 2^4
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A5 -- 2^5
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A6 -- 2^6
    CROSS JOIN (SELECT NULL UNION ALL SELECT NULL) A7 -- 2^7
    LIMIT 99 -- 2^7 > 99 > 2^6, length 2 table should be cross joined at least 7 times
) A
LEFT JOIN `table` t ON A.val = t.Cuenta
WHERE t.Cuent IS NULL
;

推荐阅读