2010-06-20 5 views
5

Vous savez comment affecter un nom de colonne temporaire à une valeur de retour dans une instruction SQL comme celle-ci?Sélectionnez AS nom_temp FROM table WHERE nom_temp = quelque chose?

SELECT something+this+that AS myvalue FROM mytable 

Est-il possible d'utiliser comme condition le nom temporaire myvalue?

SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10 

Je n'arrive pas à trouver la syntaxe pour le faire. La seule façon que je peux comprendre comment le faire est de réécrire à nouveau toute la définition de la colonne comme ceci:

SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10 

Il est évident que l'exemple ci-dessus est un exemple trivial. Ma requête sur laquelle je dois faire ceci est extrêmement complexe, donc avoir la réécriture de chaque définition de colonne retournée pour chaque conditionnel sera assez compliqué.

Donc de toute façon, quelle est la syntaxe pour cela? C'est possible?

+0

Quelle est la version du serveur SQL? –

Répondre

7

Utilisez une table dérivée ...

SELECT 
    myvalue 
FROM 
    (
    SELECT something+this+that AS myvalue FROM mytable 
    ) foo 
WHERE 
    myvalue = 10 

Ou utiliser un CTE qui ressemble plus élégante, mais est le même

;WITh myCTE AS 
(
    SELECT something+this+that AS myvalue FROM mytable 
) 
SELECT 
    myvalue 
FROM 
    myCTE 
WHERE 
    myvalue = 10 

Ou une colonne calculée de sorte qu'il est utilisable normalement

ALTER TABLE MyTable ADD myvalue AS something+this+that 
0

Je ne pense pas que ce soit possible, mais vous pouvez tricher en plaçant les données dans une table temporaire, puis en exécutant une seconde requête pour exécuter le reste.

Cela, ou SQL dynamique, mais je ne suis pas un fan de ce dernier.

-1

SELECT quelque chose + ceci + que AS myvalue FROM mytable OERE myvalu e = 10

Vous pouvez essayer quelque chose comme ça:

SELECT something+this+that AS myvalue 
FROM `users` 
HAVING myvalue=10; 
Questions connexes