If I understand your question correctly, you want results that first match name LIKE %SOMETHING% .
This can be done by setting an additional field in the IF() statement with the same condition as the WHERE for name , and sorting by this field:
SELECT name, usage_guidance, total_used_num, name LIKE CONCAT('%', ? , '%') as sort_field FROM tags WHERE ( name LIKE CONCAT('%', ?, '%') OR usage_guidance LIKE CONCAT(?, '%') ) AND name NOT IN ($in) ORDER BY sort_field DESC LIMIT 6
Edit: I realized you don't need an IF() operator at all
zeb Dec 23 '16 at 2:54 on 2016-12-23 14:54
source share