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
Libérer: 2025-01-12 08:49:43
original
249 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal