0
votes

MySQL: Erreur: l'opérande doit contenir 1 colonne (s). Quel est le problème avec mon utilisation de l'endroit où ... pas dans (sélectionnez ...)?

Crédit: Leetcode_1355. Participants d'activité em>

Question: Écrivez une requête SQL pour trouver les noms de toutes les activités avec Ni maximum, ni le nombre minimum de participants. P>

renvoie la table des résultats dans n'importe quel ordre. Chaque activité des activités de table est effectuée par n'importe quelle personne dans les amis de la table. P> xxx pré>

Mon code est comme suit: p>

WITH a AS(
    SELECT activity, COUNT(1) AS n 
    FROM Friends
    GROUP BY activity
    )

SELECT activity
FROM a
WHERE n NOT IN (SELECT MAX(n),MIN(n) FROM a)


0 commentaires

4 Réponses :


0
votes

Vous êtes proche. Mais pas dans code> fonctionne de cette façon - car la sous-requête renvoie plusieurs colonnes. Et vous comparez à une seule valeur. Au lieu de cela, utilisez deux comparaisons distinctes:

SELECT activity
FROM a
WHERE n <> (SELECT MAX(n) FROM a) AND
      n <> (SELECT MIN(n) FROM a) ;
  


1 commentaires

Merci Gordon! Je comprends maintenant.



0
votes

Je suppose que c'est que c'est parce que Sélectionnez max (n), min (n) à partir d'un générera deux colonnes, plutôt que deux rangées.

Oui, c'est le point. Autre que d'utiliser deux sous-requêtes (que vous avez déjà découvertes par vous-même), vous pouvez également tirer parti des fonctions de fenêtre (le fait que vous utilisez un avec la clause indique que vous exécutez MySQL 8.0, qui prend en charge Fonctions de fenêtre): xxx

Je soupçonne que cela fonctionne mieux qu'un avec la clause et deux sous-requêtes.


1 commentaires

Merci pour votre réponse!



0
votes

au lieu d'utiliser la sous-requête dans où code>, vous pouvez vous joindre à la sous-requête.

WITH a AS(
    SELECT activity, COUNT(1) AS n 
    FROM Friends
    GROUP BY activity
    )

SELECT activity
FROM a AS a1
JOIN (SELECT MAX(n) AS maxn, MIN(n) AS minn) AS a2
ON a1.n NOT IN (a2.maxn, a2.minn)


0 commentaires

0
votes

Vous pouvez utiliser min () code> et max ((code> max (code> Fonctions de fenêtre: xxx pré>

Voir le Demo .
Résultats: P>

| activity | n   |
| -------- | --- |
| Singing  | 2   |


0 commentaires