удалить группу, если вы просто хотите min, потому что, если вы поставите группу, она вернет все количество земель, которое вы получили в вашем подзапросе, так как при подсчете это уже созданная группа, и это отличается
SELECT *
FROM
(
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
order by cnt asc
Limit 1
другой способ -
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
having cnt in(
SELECT min(cnt)
FROM
(
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
)
, и он также работает
select * from
(
SELECT * ,row_number() over(partition by land order by cnt) as rn
FROM
(
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
) t where t.rn=1