MySQL има недокументиран синтаксис за сортиране на нули последни. Поставете знак минус (-) преди името на колоната и превключете ASC на DESC:
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC
По същество това е обратното на position DESC
поставяне на NULL стойностите на последно място, но в противен случай същите като position ASC
.
Добра справка е тук http://troels.arvin.dk/db/rdbms# select-order_by