„Wählt ABC aus (auswählen 1) als abc“ erzeugt „(1)“ anstelle von „1“
-
09-09-2019 - |
Frage
In Postgre, warum funktioniert
select abc from (select 1) as abc
erzeugt:
(1)
und
select * from (select 1) as abc
erzeugt:
1
Das ist wirklich seltsam für mich. Ist das der Fall mit MySQL, Oracle, etc? Ich verbrachte Stunden herauszufinden, warum meine Bedingungen versagen ...
Lösung
Die Zeilen durch Ihre Abfragen zurückgegeben haben unterschiedliche Art: die erste ist ROW(INT)
, während der zweite ist INT
.
MySQL
und andere fehlen diese Funktion.
In Ihrer ersten Abfrage, Sie sind eine ganze ROW
als eine einzige Spalte auswählen. Diese Abfrage
SELECT abc FROM (SELECT 1, 2) abc
produzieren (1, 2)
, die auch eine einzelne Spalte und hat ROW
geben.
den INT
Wert auszuwählen, verwenden Sie:
SELECT abc.col
FROM (
SELECT 1 AS col
) abc
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow