https://www.youtube.com/watch?v=WBqTj-FYux8&list=PLavw5C92dz9Hxz0YhttDniNgKejQlPoAn&index=14

STR_TO_DATE()

DROP TABLE IF EXISTS invoice;

CREATE TABLE invoice (
    serial_no INT,
    invoice_date DATE
);

INSERT INTO invoice (serial_no, invoice_date) VALUES (330115, STR_TO_DATE('01-Mar-2024', '%d-%b-%Y'));
INSERT INTO invoice (serial_no, invoice_date) VALUES (330120, STR_TO_DATE('01-Mar-2024', '%d-%b-%Y'));
INSERT INTO invoice (serial_no, invoice_date) VALUES (330121, STR_TO_DATE('01-Mar-2024', '%d-%b-%Y'));
INSERT INTO invoice (serial_no, invoice_date) VALUES (330122, STR_TO_DATE('02-Mar-2024', '%d-%b-%Y'));
INSERT INTO invoice (serial_no, invoice_date) VALUES (330125, STR_TO_DATE('02-Mar-2024', '%d-%b-%Y'));

SELECT * FROM invoice;

Pasted image 20241118175849.png

WITH RECURSIVE
WHERE NOT EXISTS

WITH RECURSIVE cte AS 
(
SELECT MIN(serial_no) AS n FROM invoice
UNION
SELECT (n+1) AS n
FROM cte
WHERE n < (SELECT MAX(serial_no) FROM invoice)
)
SELECT n AS MISSING_SERIAL_NO FROM cte
WHERE NOT EXISTS (SELECT serial_no FROM invoice WHERE serial_no = CTE.n)