我找不到一種方法來完成這項工作:我需要獲得所有id1
有id2
''(empty string)
以及一個至少非空id2
。當其他列有兩個特定值時選擇一個值
我得到這個爲:SELECT id1, id2 FROM mytable WHERE id1 = ... GROUP BY id1,id2
id1 id2
1 b2-04af1ab73705-fb8000-006bfb81a78e5e5920
2 b2-04af1ab73705-fb8000-006bfb81a78e5e5920 5835113447594857813
所以現在我需要得到這個id1
。我嘗試了很多東西,但最接近的是得到true
或false
如果條件滿足,但不能得到各自的id1
與它 - 我需要它,因爲我想在較大的集合上運行(不是mytable
是在id1=...
子集) 。
當我嘗試這樣的:
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
,我得到這個錯誤:Line 1:103 Expression not in GROUP BY key 'visitorid'
並不能找到辦法解決它。
有什麼想法嗎?
編輯:
與丹尼斯的幫助下解決了這個問題,如下所示:
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)
哦,是的,我走了一個可怕的複雜的方式。我使用select和join兩個選項,然後採用不同的'id1'!感謝您指出這個想法:) 我會在我的問題編輯 –
認真? .................. –