我有工作了如何從下面的MySQL表返回所需的行存在一些問題:過濾重複
first_name last_name collection
==========================================
Bob Jones 1
Ted Jones 1
Bob Jones 1
Bob Jones 2
Ted Baker 2
我想返回名字的基於列的計數'first_name'和'last_name'。通常情況下,這只是一個簡單的例子,使用'group by first_name,last_name',因此我們得到以下結果:Bob Jones的計數爲3,Ted Jones的計數爲1,Ted Baker的計數爲1。
但是,難度是第三列'收集'。我需要排除集合之間的重複名稱,但不在集合中。因此,如果第一個集合中不包含名稱,那麼我們會將第一個集合中的所有名稱都包含在計數中,但只包含來自第二個集合的計數中的名稱。
因此,理想的結果如下:Bob Jones的計數爲2,Ted Jones的計數爲1,Ted Baker爲1。
first_name last_name collection included?
========================================== ===============
Bob Jones 1 Yes
Ted Jones 1 Yes
Bob Jones 1 Yes
Bob Jones 2 No
Ted Baker 2 Yes
我真的試圖讓我的頭在這附近,但我開始用盡想法。任何幫助將非常感激......謝謝!
馬克您好,感謝您的回答,非常快!不幸的是,這不是我正在尋找的。我認爲,如果我們在第1集中發生了三次bob jones,第2集中發生了三次bob jones,那麼您建議的查詢只會返回一個2(兩個集合中的每一個都是一個),而實際上它應該是3因爲集合1中有三次出現bob jones。實際上,如果它在已經計數的另一個集合中突然出現,我們只是想忽略該名稱,但如果它沒有被包括在內,則將其包括在內。 – DrNoFruit
我想你可以通過第一次,最後一次收集分組來做一個常規的「分組」來獲得每次收集計數,然後在另一個查詢中將其包裹起來以過濾出不需要的集合。 –