Wie erstelle ich eine virtuelle Spalte mit MySQL SELECT?

Lesezeit: 4 Minuten

Benutzer-Avatar
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

Benutzer-Avatar
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 ...

Sie könnten eine CASE-Anweisung verwenden, z
Benutzer-Avatar

cmsjr Ihre Syntax würde einen Alias ​​für a als b erstellen, aber er hätte keinen Gültigkeitsbereich, der über die Ergebnisse der Anweisung hinausgeht. Es hört sich so an, als ob Sie vielleicht eine erstellen möchten

AUSSICHT
Benutzer-Avatar

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

1346320cookie-checkWie erstelle ich eine virtuelle Spalte mit MySQL SELECT?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy