I don't have a more elegant solution for you but here are a couple of solutions that have shorter queries
1.
SELECT
num
FROM
(
SELECT @ROW := @ROW + 1 AS num FROM
(SELECT 0 UNION SELECT 1 ) t,
(SELECT 0 UNION SELECT 1 ) t1,
(SELECT 0 UNION SELECT 1 ) t2,
(SELECT 0 UNION SELECT 1 ) t3,
(SELECT 0 UNION SELECT 1 ) t4,
(SELECT 0 UNION SELECT 1 ) t5,
(SELECT 0 UNION SELECT 1 ) t6,
(SELECT 0 UNION SELECT 1 ) t7,
(SELECT @ROW:=-1) r
) ids
WHERE
ids.num <> 255
AND
ids.num NOT IN (
SELECT
lunmap.lun_map_value
FROM
cm_storage.lunmap,
cm_storage.igroup
WHERE
igroup.id=lunmap.igroup_id
AND igroup.name REGEXP '${ESXCluster}[0-9]+'
)
2. Use your inner query to create a table called ids in the playground database that comes with WFA installation
so your user input query becomes
SELECT
num
FROM
playground.ids
WHERE
ids.num NOT IN (
SELECT
lunmap.lun_map_value
FROM
cm_storage.lunmap,
cm_storage.igroup
WHERE
igroup.id=lunmap.igroup_id
AND igroup.name REGEXP '${ESXCluster}[0-9]+'
)