SELECT *
FROM table
ORDER BY user_id = @user_id DESC, id DESC LIMIT 1
Если заданный @user_id есть - вернётся соотв. запись. Если таких записей несколько - вернётся запись из них с максимальным id. Иначе вернётся просто запись с макс. id.
Если же под "Если есть user_id вернуть запись с user_id" разумеется "ну хоть какой-то, лишь бы не NULL", то
SELECT *
FROM table
ORDER BY user_id IS NULL, id DESC LIMIT 1