Maison >base de données >tutoriel mysql >Erreur MySQL NOT IN : pourquoi « l'opérande devrait contenir 1 colonne » ?

Erreur MySQL NOT IN : pourquoi « l'opérande devrait contenir 1 colonne » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-12 08:49:43291parcourir

MySQL NOT IN Error: Why

La requête MySQL NOT IN a échoué : l'opérande doit contenir 1 colonne

Lorsque vous rencontrez l'erreur « l'opérande doit contenir 1 colonne » dans une requête MySQL NOT IN, il est crucial d'en comprendre la cause première.

Cette erreur se produit car l'opérande de la condition NOT IN contient plusieurs colonnes :

<code class="language-sql">SELECT * from campaigns WHERE id not in (
    SELECT 
        e.id_campaign, d.name, d.frequency, d.country, d.referral, d.bid, d.status, COUNT(e.id) AS countcap  </code>

L'opérateur NOT IN nécessite que son opérande soit une seule colonne, tandis que la sous-requête renvoie des lignes contenant plusieurs colonnes.

Solution :

Une façon de résoudre cette erreur consiste à extraire les colonnes nécessaires de la sous-requête et à les comparer avec la colonne id de la requête externe :

<code class="language-sql">select *
from campaigns 
where id not in (
    select id_campaign from (
        select e.id_campaign as id_campaign, d.frequency, e.id
        from campaigns d left join served e on d.id = e.id_campaign
        where d.status = 'Active'
        group by e.id_campaign 
        having count(e.id) < d.frequency 
    ) as subquery
)</code>

Garantit une utilisation correcte de l'opérateur id_campaign en limitant les résultats de la sous-requête à une seule colonne NOT IN. De plus, nous avons ajouté un alias as subquery pour la sous-requête, ce qui est nécessaire dans certaines versions de MySQL. Cela améliore la clarté et la lisibilité des requêtes.

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