WHERE (user_id = 17 OR user_id IS NULL) AND name = "menu_items"
Et juste pour nettoyer le reste de la requête :
L'id dans les préférences définies n'a pas besoin d'être là, utilisez une clé combinée de preference_id et user_id à la place.
Si l'id de preferences a été nommé preference_id , le long ON l'instruction peut être remplacée par USING(preference_id)
Le IF la fonction peut être remplacée par COALESCE(defined_value, default_value)