« Select abc de (sélection 1) abc » produit « (1) » au lieu de « 1 »
-
09-09-2019 - |
Question
Dans Postgre, pourquoi
select abc from (select 1) as abc
produit:
(1)
et
select * from (select 1) as abc
produit:
1
C'est pour moi vraiment étrange. Est-ce le cas avec MySQL, Oracle, etc? Je passais des heures à comprendre pourquoi mes conditions échouaient ...
La solution
Les lignes retournées par vos requêtes sont de type différent: le premier est ROW(INT)
, tandis que le second est INT
.
MySQL
et d'autres ne disposent pas de cette fonction.
Dans votre première requête, vous sélectionnez une ROW
tout comme une seule colonne. Cette requête
SELECT abc FROM (SELECT 1, 2) abc
produira (1, 2)
, qui est une seule colonne trop et a le type ROW
.
Pour sélectionner la valeur INT
, utilisez:
SELECT abc.col
FROM (
SELECT 1 AS col
) abc
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow