naprościej by było utworzy tabelę - listę rang np: list_rang ( w niej by było np. pole rang )
wiersze tabeli zawierałyby wartości od o do 9
zapytanie wyglądałoby wtedy tak :
select rang from list_rang where rang not in ( select rank_id from ranks where ....-- warunek na corpo)
ma to tę zaletę że uniezależnisz się od ilości rank - a nuż będzie ich 20 a nie 10 - wtedy dopisujesz je tylko do tabeli list_rang - a zapytanie się nie zmienia
W MSSQL można skorzystać także z takiej tabeli tworzonej ad hock ( nie wiem jak jest w mysql)
tutaj masz opis ;
https://stackoverflow.com/questions/9113204/t-sql-how-to-select-values-in-value-list-that-are-not-in-the-table