Je ne trouve pas un moyen de faire ce travail: Je dois obtenir tous id1
qui ont id2
''(empty string)
et aussi un au moins non vide id2
.Sélectionnez une valeur lorsque l'autre colonne a deux valeurs spécifiques
Je reçois cela comme: SELECT id1, id2 FROM mytable WHERE id1 = ... GROUP BY id1,id2
id1 id2
1 b2-04af1ab73705-fb8000-006bfb81a78e5e5920
2 b2-04af1ab73705-fb8000-006bfb81a78e5e5920 5835113447594857813
Alors maintenant, je dois obtenir ce id1
. J'ai essayé beaucoup de choses, mais le plus proche est true
ou false
si la condition est remplie, mais je ne peux pas obtenir le id1
respectif avec - j'en ai besoin car je veux l'exécuter sur un plus grand ensemble (pas mytable
est sous-classé sur id1=...
) .
Quand je l'essayer comme ceci:
SELECT if(sum(if(tab1.id1 != '', 1, 0)) < count(tab1.id2), tab1.id1,false) as myguy
FROM
( SELECT id1,id2
FROM mytable
WHERE id1 = 'b2-04af1ab73705-fb8000-006bfb81a78e5e5920'
GROUP BY visitorid,platformvisitorid
) AS tab1
, je reçois cette erreur: Line 1:103 Expression not in GROUP BY key 'visitorid'
et ne peut pas trouver un moyen de contourner cela.
Des idées, s'il vous plaît?
EDIT:
a résolu le problème avec l'aide de Dennis comme suit:
SELECT tab4.id1 FROM
(SELECT tab1.id1 FROM (SELECT id1, id2 FROM mytable GROUP BY id1, id2) tab1 WHERE id2!='') tab3
INNER JOIN
(SELECT tab2.id1 FROM (SELECT id1, id2 FROM mytable GROUP BY id1, id2) tab2 WHERE id2='') tab4
ON (tab3.id1 = tab4.id1)
Oh oui, je suis allé avec une manière horriblement complexe. Je l'ai fait fonctionner avec simplement 'select' et' join' sur les deux sélections et en prenant distinctement 'id1'! Merci de montrer cette idée :) Je l'éditerai dans ma question –
Sérieusement? .................. –