2017-01-27 42 views
-2

我需要從一個表中計數記錄,但我必須將pId 55和61作爲一個值,只有當user_id是相同的。GROUP_CONCAT行如果值

id  pId user_id 

6126 55 127742 
6128 55 127584 
6132 58 128788 
6134 55 54445 
6136 55 127897 
6139 61 127584 



select id, pId, user_id, count(1), 
    from table 
    where date >= '2017-01-19 00:00:00' AND date < '2017-01-20 00:00:00' 
    group by user_id 
    ; 
+0

不太明白。從你的樣本數據來看,最終結果應該是什麼?你的請求與'group_concat'有什麼關係? –

+0

我想計算行數。最終結果應該是9行而不是10行,因爲id爲'6128'的行與'6139'行具有相同的'user_id','pId'爲55和61.當相同的user_id是當下。編輯的樣本數據。 – Ciprian

+1

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-詢問 – Strawberry

回答

1

創建另一個表格,其中61被55替換。現在計算你想要計算的任何值。

select a.user_id, count(distinct a.pid_user_id) 
    from (select id, 
    concat(if(pid = 61, 55, pid) , '_', user_id) as pid_user_id, 
    user_id 
    from table 
    where date >= '2017-01-19 00:00:00' AND date < '2017-01-20 00:00:00') as a 
group by a.user_id;