Tach!
die von mir gewählte Syntax
CASE WHEN t1.user_id > 0 THEN t2.name ELSE t1.name END AS name
die von dir vorgeschlagene
IF(t1.user_id > 0, t2.name, t1.name) AS name
Korrekt so?
Sieht gut aus.
Gibt es gravierende Unterschiede in der Kompatibilität zu anderen SQL-Systemen? Ist eine der beiden Formen in Sachen Wiederverwendbarkeit in anderen Systemen vorzuziehen?
Sich bei Datenbankabfragen um die Wiederverwendbarkeit in anderen Systemen einen Kopf zu machen, ist meist vergebliche Liebesmüh. Erstens wegen YAGNI. Wann kommst du denn in die Verlegenheit, umziehen zu müssen? Und wenn doch, was wären denn, zweitens, Umzugsgründe, um von einem kostenlosen System auf ein anderes umzusteigen? Nur die Ausführungsgeschwindigkeit? Oder die Wartbarkeit des Systems, jenseits von SQL-Statements? Oder sind es nicht doch eher die Features, die sich dann auch und zwar teilweise gehörig im SQL-Dialekt niederschlagen? Vermutlich wird es hauptsächlich letzteres sein, und dann kommst du nicht umhin, beziehungsweise es ist sehr sinnvoll, die Statements des gesamten Projekts auf notwendige und/oder mögliche Änderungen hin zu untersuchen - inklusive eines umfangreichen Tests, dass sich die Features deiner Anwendung weiterhin wie erwartet verhalten.
Ansonsten: CASE dürfte auch anderswo sehr bekannt sein.
dedlfix.