"seleccione abc de (seleccione 1) como abc" produce "(1)" en lugar de "1"
-
09-09-2019 - |
Pregunta
En Postgre, ¿por qué
select abc from (select 1) as abc
produce:
(1)
y
select * from (select 1) as abc
produce:
1
Eso es realmente extraño para mí.¿Es ese el caso de MySQL, Oracle, etc.?Pasé horas averiguando por qué mis condiciones estaban fallando...
Solución
Las filas devueltas por sus consultas tienen diferentes tipos:El primero es ROW(INT)
, mientras que el segundo es INT
.
MySQL
y otros carecen de esta característica.
En tu primera consulta, estás seleccionando un conjunto ROW
como una sola columna.Esta consulta
SELECT abc FROM (SELECT 1, 2) abc
Producirá (1, 2)
, que también es una sola columna y tiene tipo ROW
.
Para seleccionar el INT
valor, uso:
SELECT abc.col
FROM (
SELECT 1 AS col
) abc
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow