„Wählt ABC aus (auswählen 1) als abc“ erzeugt „(1)“ anstelle von „1“

StackOverflow https://stackoverflow.com/questions/737625

  •  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 ...

War es hilfreich?

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
scroll top