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
3 Réponses :
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;
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
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;