2010-10-21 5 views
1

Je rencontre des problèmes pour filtrer les données d'une table relationnelle. La requête fait partie d'une jointure, mais je suis coincé sur une partie de base.Filtrage et regroupement MySql

Je dois supprimer tous les résultats avec un certain ID si la condition est trouvée.

requête similaire à:

select * from couleurs où la couleur = groupe 'rouge' par id

id color 
1 red 
1 blue 
1 blue 
2 green 
2 blue 
3 green 
3 orange 
4 red 
5 white 

retours 1,2,3,5

I besoin de seulement renvoyer 2,3,5

Je ne suis pas sûr de ce que la commande mysql à utiliser

Répondre

1
select * from colors group by id having not group_concat(color) LIKE "%red%" 

devrait fonctionner (non testé).

Mais il est étrange d'avoir beaucoup ids avec la même valeur ...

+0

select group_concat (couleur) comme groupe couleurs par id ayant pas les couleurs comme « % red% » – Crunchline

+0

Il est de toute façon une mauvaise façon, je pense qu'il devrait s'agir d'une table de jointure mais je ne connais pas le schéma de votre base de données. – MatTheCat

+0

Ou quelque chose comme ça. L'ID multiple est wierd, mais c'est la façon dont les données sont liées à partir d'une autre table. – Crunchline

1
SELECT DISTINCT id 
FROM my_table 
WHERE id NOT IN (
    SELECT id 
    FROM my_table 
    WHERE color = ? 
)