Assuming you have no NULL values (as in the sample data), use least() and greatest():
select item_no, least(idn, idb, idc, ide, idf, idg, idh) as `min`,
greatest(idn, idb, idc, ide, idf, idg, idh) as `max`
from table t;
EDIT:
With NULL values, this becomes much harder. One way is if you can define a valid range, then something like this works:
select item_no,
least(coalesce(idn, 999999999), coalesce(idb, 999999999), coalesce(idc, 999999999), coalesce(ide, 999999999),
coalesce(idf, 999999999), coalesce(idg, 999999999), coalesce(idh, 999999999)
) as `min`,
greatest(coalesce(idn, -1), coalesce(idb, -1), coalesce(idc, -1), coalesce(ide, -1),
coalesce(idf, -1), coalesce(idg, -1), coalesce(idh, -1)
) as `max`
from table t;
You can convert back to NULL with case logic or nullif(), if all the values in a row can be NULL:
select item_no,
nullif(least(coalesce(idn, 999999999), coalesce(idb, 999999999), coalesce(idc, 999999999), coalesce(ide, 999999999),
coalesce(idf, 999999999), coalesce(idg, 999999999), coalesce(idh, 999999999)
),
999999999) as `min`,
nullif(greatest(coalesce(idn, -1), coalesce(idb, -1), coalesce(idc, -1), coalesce(ide, -1),
coalesce(idf, -1), coalesce(idg, -1), coalesce(idh, -1)
),
-1) as `max`
from table t;
A33entry has a typo. Min should be 1.21.