MySQL: Comment Réécrire un élément Sélectionnez comme « y » puis en utilisant plus tard dans une déclaration où

Arc en ciel :

Alors, que Im essayant de faire est de cela, mais cela ne fonctionne pas:

Select count(staffno)as total_staff,avg(salary),branchno
From staff
Where total_staff > 1
Group by branchno

Voici un autre exemple:

Select salary,salary*1.015 as proposed_salary
From staff
Where proposed_salary > 50000
GMB:

Vous ne pouvez pas utiliser une expression d' agrégat ( sum(), count(), ...) dans la whereclause de la requête. Cette clause est évaluée avant les lignes sont regroupées par la group byclause, de sorte que les agrégats ne sont pas encore disponibles.

Dans SQL, c'est le but de l' havingarticle:

select count(staffno) as total_staff, avg(salary), branchno
from staff
having count(staffno) > 1 -- MySQL also allows "total_staff > 1"
group by branchno

Quant à la deuxième requête: l'alias défini dans la selectclause ne sont pas disponibles dans la whereclause soit (pour la même raison que ci - dessus). Vous pouvez répéter l'expression:

select salary, salary * 1.015 as proposed_salary
from staff
where salary * 1.015 > 50000

Ou vous pouvez utiliser une table dérivée (cte ou sous-requête):

select *
from (
    select salary, salary * 1.015 as proposed_salary
    from staff
) t
where proposed_salary > 5000

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=373265&siteId=1
conseillé
Classement