Maison  >  Article  >  base de données  >  La différence entre où et avoir dans Oracle

La différence entre où et avoir dans Oracle

下次还敢
下次还敢original
2024-05-02 23:12:18995parcourir

La différence entre les clauses WHERE et HAVING réside dans la portée : WHERE filtre les lignes de base et HAVING filtre l'ensemble de résultats groupés. WHERE est utilisé pour les conditions à une seule ligne et HAVING est utilisé pour les conditions de résultat de groupe. WHERE vient après FROM et avant SELECT, HAVING vient après GROUP BY. WHERE peut être utilisé seul, HAVING doit être utilisé avec une opération de groupe.

La différence entre où et avoir dans Oracle

Différence entre les clauses WHERE et HAVING dans Oracle

WHERE et HAVING sont deux clauses SQL utilisées pour filtrer l'ensemble de données. La principale différence entre eux est leur portée :

1. Portée

  • La clause WHERE est utilisée pour filtrer la table sous-jacente ou afficher les lignes. Il est exécuté avant l'opération de regroupement, il applique donc la condition à une seule ligne. La
  • HAVING clause est utilisée pour filtrer l'ensemble de résultats groupés. Il est exécuté après l'opération de regroupement, il applique donc des conditions aux résultats du groupe.

2. Scénarios d'utilisation

  • La clause WHERE est utilisée pour filtrer les lignes qui ne répondent pas à des conditions spécifiques. Par exemple, pour rechercher tous les articles dont le prix est supérieur à 100 $ :
<code class="sql">SELECT * FROM products WHERE price > 100;</code>
  • clause HAVING est utilisée pour filtrer les groupes qui répondent à certains critères. Par exemple, recherchez des groupes d'articles dont le prix moyen est supérieur à 100 $ :
<code class="sql">SELECT category, AVG(price) AS avg_price
FROM products
GROUP BY category
HAVING avg_price > 100;</code>

3 Position

  • La clause WHERE est située après la clause FROM et avant la clause SELECT.
  • Clause HAVING est située après la clause GROUP BY.

4. Exemple

<code class="sql">-- 使用 WHERE 子句过滤行
SELECT * FROM orders WHERE customer_id = 1;

-- 使用 HAVING 子句过滤组
SELECT product_category, SUM(quantity) AS total_quantity
FROM order_details
GROUP BY product_category
HAVING total_quantity > 100;</code>

Remarque :

  • La clause HAVING ne peut être utilisée qu'avec des opérations de regroupement, tandis que la clause WHERE peut être utilisée dans n'importe quelle instruction SQL.
  • La condition utilisée dans la clause HAVING doit faire référence à une fonction d'agrégation ou à une colonne de regroupement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn