1
votes

Postgres indiquant une erreur lors de l'exécution d'une erreur de sous-requête à ou près de select

Je sais que cette question sera facile pour la plupart des gens. Mais je m'attendais vraiment à ce que cela fonctionne. Pourquoi cette requête ne fonctionne-t-elle pas?

select name, price,  select num from ( select 1 as num) as value 
from products;

J'ai ceci:

erreur à ou près de select


0 commentaires

3 Réponses :


1
votes

Vous pouvez le faire avec une seule instruction SELECT :

select t.col1, t.col2 t.col3,
       (select t1.col from table t1 where . . . ) as col_name
from table t;

Une seule instruction externe SELECT ne doit contenir que des colonnes / expressions, si elle a d'autres instructions SELECT alors il devrait être sous forme de sous-requête .

quelque chose comme ça:

select name, price, 1 as value 
from products;


0 commentaires

0
votes

La réponse dépend de ce que vous voulez faire exactement.

rappelez-vous que select 1 from table est une requête SQL correcte, qui renvoie "la première colonne" de la table

il explique pourquoi vous avez une erreur de syntaxe dans votre requête. le de la table est manquant dans votre (sélectionnez 1 comme num)

alors confirmons ce que vous voulez exactement


0 commentaires

0
votes

Pourquoi cela échoue-t-il?

select name, price,  (select num from ( select 1 as num)) as value 
from products;

select est un mot-clé SQL qui indique une nouvelle requête ou une sous-requête. Lorsqu'il est utilisé avec une sous-requête, il doit être précédé de ses propres parenthèses. Par conséquent, vous obtenez une erreur de syntaxe.

Si vous ajoutez les parenthèses:

select name, price,  select num from ( select 1 as num) as value 
from products;

Vous obtiendrez une erreur différente , car la sous-requête imbriquée n'a pas d'alias de table.

En fin de compte, vous pouvez résoudre ce problème selon votre intention:

sélectionnez p.name, p.price, (sélectionnez num à partir de (sélectionnez 1 comme num) x) comme valeur à partir de produits p;


0 commentaires