Wenn ich SELECT a AS b mache und b keine Spalte in der Tabelle ist, würde die Abfrage die "virtuelle" Spalte erstellen?
Tatsächlich muss ich eine virtuelle Spalte in die Abfrage einbinden und einige Informationen in die Abfrage verarbeiten, damit ich sie später für jedes Element verwenden kann.
Antworten:
Etwas wie:
SELECT id, email, IF(active = 1, 'enabled', 'disabled') AS account_status FROM users
Auf diese Weise können Sie Vorgänge ausführen und als Spalten anzeigen.
BEARBEITEN:
Sie können auch Verknüpfungen verwenden und Operationen als Spalten anzeigen:
SELECT u.id, e.email, IF(c.id IS NULL, 'no selected', c.name) AS country FROM users u LEFT JOIN countries c ON u.country_id = c.id
quelle
Versuchen Sie dies, wenn Sie eine virtuelle Spalte "age" innerhalb einer select-Anweisung erstellen möchten:
select brand, name, "10" as age from cars...
quelle
places_types
als tpt ORDER BY tpt.name ASC GRENZE ?,?Sie können virtuelle Spalten als hinzufügen
SELECT '1' as temp
Wenn Sie jedoch versuchen, eine Bedingung in eine zusätzlich generierte Spalte einzufügen, funktioniert dies nicht und es wird eine Fehlermeldung angezeigt, da die Spalte nicht vorhanden ist.
Wir können dieses Problem lösen, indem wir das SQL-Ergebnis als table.ie zurückgeben.
SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1
quelle
SELECT ruft nur Daten aus der Datenbank ab und ändert die Tabelle selbst nicht.
Wenn du schreibst
SELECT a AS b FROM x
"b" ist nur ein Aliasname in der Abfrage. Es wird keine zusätzliche Spalte erstellt. Ihr Ergebnis im Beispiel würde nur eine Spalte mit dem Namen "b" enthalten. Aber die Spalte in der Tabelle würde "a" bleiben. "b" ist nur ein anderer Name.
Ich verstehe nicht wirklich, was du mit "damit ich es später mit jedem Gegenstand verwenden kann" meinst. Meinen Sie später in der select-Anweisung oder später in Ihrer Anwendung. Vielleicht könnten Sie einen Beispielcode bereitstellen.
quelle
Sie könnten eine CASE-Anweisung verwenden, wie z
SELECT name ,address ,CASE WHEN a < b THEN '1' ELSE '2' END AS one_or_two FROM ...
quelle
Ihre Syntax würde einen Alias für a als b erstellen, aber keinen Umfang haben, der über die Ergebnisse der Anweisung hinausgeht. Es hört sich so an, als ob Sie eine ANSICHT erstellen möchten
quelle