2010-08-25 6 views
1

Je voudrais savoir s'il est possible de trouver une valeur dans une instruction select et l'utiliser dans une clause where comme:Utilisation d'une variable dans MySQL Sélectionnez statment dans une clause Where

SELECT col1, MAX(col2) - COUNT(DISTINCT col3) as variable 
FROM table 
WHERE col1 > variable 

« table » est assez gros, et je veux affiner les dossiers que la requête doit regarder aussi vite que possible.

Je sais que ce n'est pas un peu de code n'est pas possible comme écrit (# 1054 - Colonne inconnue 'variable' dans 'where clause'), mais est-il de toute façon pour comprendre la valeur de "variable" puis l'utiliser dans la clause WHERE?

Répondre

1

Vous pouvez essayer la syntaxe de sous-requête, également appelée sélection imbriquée.

Je pense que quelque chose comme:

SELECT col1 WHERE col1 > (SELECT MAX(col2) - COUNT(DISTINCT col3)) 

Voir la MySQL manual pour certains de meilleurs exemples.

+0

Merci, cela va fonctionner. –

0

Dans certains cas, vous pouvez répliquer une expression dans une clause WHERE, comme démontré par RedFilter. Dans d'autres cas, cela n'est pas possible et vous pouvez utiliser une clause HAVING, par ex.

SELECT col1, MAX(col2) - COUNT(DISTINCT col3) as variable 
FROM table 
HAVING col1 > variable 

HAVING est moins efficace, penser comme un post-processeur resultset plutôt que quelque chose l'optimiseur de requête peut faire quoi que ce soit avec.

Questions connexes