मैंने आपकी तालिका का नाम unused
रखा है ।
SELECT id
FROM (
SELECT 1 AS id
) q1
WHERE NOT EXISTS
(
SELECT 1
FROM unused
WHERE id = 1
)
UNION ALL
SELECT *
FROM (
SELECT id + 1
FROM unused t
WHERE NOT EXISTS
(
SELECT 1
FROM unused ti
WHERE ti.id = t.id + 1
)
ORDER BY
id
LIMIT 1
) q2
ORDER BY
id
LIMIT 1
इस क्वेरी में दो भाग हैं।
पहला भाग:
SELECT *
FROM (
SELECT 1 AS id
) q
WHERE NOT EXISTS
(
SELECT 1
FROM unused
WHERE id = 1
)
एक 1
का चयन करता है क्या इस id
. के साथ तालिका में कोई प्रविष्टि नहीं है? ।
दूसरा भाग:
SELECT *
FROM (
SELECT id + 1
FROM unused t
WHERE NOT EXISTS
(
SELECT 1
FROM unused ti
WHERE ti.id = t.id + 1
)
ORDER BY
id
LIMIT 1
) q2
पहले id
का चयन करता है तालिका में जिसके लिए कोई अगला id
नहीं है ।
परिणामी क्वेरी इन दो मानों में से कम से कम का चयन करती है।