Wie erstelle ich eine virtuelle Spalte mit MySQL SELECT?
Lesezeit: 4 Minuten
Skuta
Wenn ich a AS b auswähle 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 integrieren und einige Informationen in der Abfrage verarbeiten, damit ich sie später mit jedem Element verwenden kann.
Ich habe die Frage ein paar Mal gelesen und es muss etwas geben, das ich vermisse. Kannst du etwas genauer erklären, wonach du suchst?
– lc.
18. Januar 2009 um 15:01 Uhr
Stellen Sie sich die Abfrage als Array von Zeilen und Spalten vor. Normalerweise erbe ich nur Spalten aus der Tabellenstruktur durch einfaches SELECT * FROM, aber jetzt müsste ich meine eigene Spalte einfügen.
– Skuta
18. Januar 2009 um 15:05 Uhr
vielleicht solltest du nehmen eines schau mal in die dokumentation..
– Benutzer3850
18. Januar 2009 um 15:07 Uhr
Gabriel Sosa
Etwas wie:
SELECT id, email, IF(active = 1, 'enabled', 'disabled') AS account_status FROM users
Auf diese Weise können Sie Operationen 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
Dieser Beitrag bringt mein Wissen über einfache mysql-Anweisungen einen Weg nach vorne :), bedeutet das, dass ich JEDE “Spalte” erstellen kann??
– Skuta
18. Januar 2009 um 15:04 Uhr
Aber Sie können diese neue Spalte nicht verwenden, um Operationen oder neue IF-Auswertungen durchzuführen … oder doch?
– Luis
1. Juni 2013 um 1:21 Uhr
Sie können es verwenden, um Zeilen zu filtern. Anstatt die Bedingung jedoch in die WHERE-Klausel zu packen, müssen Sie sie in eine HAVING-Klausel packen: HAVING country=’Germany’ zum Beispiel.
– Marsbär
16. Februar 2015 um 12:38 Uhr
Probieren Sie dieses aus, wenn Sie eine virtuelle Spalte „Alter“ innerhalb einer Auswahlanweisung erstellen möchten:
select brand, name, "10" as age from cars...
Guter Trick. Einfach, aber das hatte ich noch nie probiert. Das war genau das, was ich mich gefragt habe! 😀
– Atomox
24. Januar 2012 um 18:12 Uhr
Hier ist ein etwas komplizierter Trick für die Arbeit mit anderen Tabellen in derselben MySQL-Abfrage: SELECT tpt.*, (SELECT COUNT places_types FROM places WHERE tpt.id=places.type) als obj_count FROM
als tpt ORDER BY tpt.name ASC LIMIT ?,?
– realmag777
23. Januar 2015 um 12:48 Uhr
Dies ist ein besonders guter Trick beim Erstellen von Vereinigungen, bei denen es vorteilhaft ist zu wissen, aus welchem Teil der Vereinigung eine Zeile stammt. Fügen Sie einfach eine andere Konstante in jede Auswahl ein, die angibt, aus welchem Block die Zeile stammt. Und eine Million und eine andere Verwendung.
– scott8035
22. Oktober 2018 um 20:23 Uhr
SELECT '1' as temp
Sie können virtuelle Spalten als hinzufügen
Wenn Sie jedoch versuchen, eine Where-Bedingung in eine zusätzlich generierte Spalte einzufügen, funktioniert dies nicht und es wird eine Fehlermeldung angezeigt, da die Spalte nicht vorhanden ist.
SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1
Wir können dieses Problem lösen, indem wir das SQL-Ergebnis als table.ie zurückgeben,
SELECT ruft nur Daten aus der Datenbank ab, es ändert nicht die Tabelle selbst.
SELECT a AS b FROM x
Wenn du schreibst
“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 Sie mit “damit ich es später mit jedem Artikel verwenden kann” meinen. Meinst du später in der Select-Anweisung oder später in deiner Bewerbung? Vielleicht könnten Sie einen Beispielcode bereitstellen.
SELECT name
,address
,CASE WHEN a < b THEN '1'
ELSE '2' END AS one_or_two
FROM ...
der König2 SehenMariaDB-Dokumentation VIRTUAL . Virtuelle Spalten werden durch Hinzufügen des Schlüsselworts erstellt PERSISTENT in die Spalte, während Sie direkt davor einen Ausdruck hinzufügen. Das Gute: Sie können der virtuellen Spalte einen Index hinzufügen. Wenn Sie die tatsächlichen Werte benötigen und sich Sorgen um die Geschwindigkeit über den Speicherplatz machen, verwenden Sie a
13463200cookie-checkWie erstelle ich eine virtuelle Spalte mit MySQL SELECT?yes
Ich habe die Frage ein paar Mal gelesen und es muss etwas geben, das ich vermisse. Kannst du etwas genauer erklären, wonach du suchst?
– lc.
18. Januar 2009 um 15:01 Uhr
Stellen Sie sich die Abfrage als Array von Zeilen und Spalten vor. Normalerweise erbe ich nur Spalten aus der Tabellenstruktur durch einfaches SELECT * FROM, aber jetzt müsste ich meine eigene Spalte einfügen.
– Skuta
18. Januar 2009 um 15:05 Uhr
vielleicht solltest du nehmen eines schau mal in die dokumentation..
– Benutzer3850
18. Januar 2009 um 15:07 Uhr