2017-10-12 65 views
0

減少的結果我有一個通過幾個生成以下信息的表沒有唯一的ID顯示其他表的連接:將它們組合

id | username | blocked | online 
2 | The_Boss | 0 | 0 
2 | The_Boss | 0 | 0 
3 | The_Dude | 1 | 1 
3 | The_Dude | 0 | 0 

,我想給下面的結果:

id | username | blocked | online 
2 | The_Boss | 0 | 0 
3 | The_Dude | 1 | 1 

id是一個與用戶名匹配的用戶標識。基本上,我需要做的是生成一個在線/離線用戶列表,前提是用戶具有多個不同的在線記錄,具體取決於他所在網頁的不同部分。無論如何,如果用戶在任何部分在線,我希望online=1優先於offline = 0,但每個用戶標識應該變得唯一。因此,在一個更大的規模,將是這樣的:

id | username | blocked | online 
2 | The_Boss | 0 | 0 
2 | The_Boss | 0 | 0 
2 | The_Boss | 0 | 0 
3 | The_Dude | 1 | 1 
3 | The_Dude | 0 | 0 
3 | The_Dude | 1 | 1 
4 | The_Kind | 0 | 0 
4 | The_Kind | 0 | 0 
4 | The_Kind | 0 | 0 
4 | The_Kind | 0 | 0 
5 | The_Mann | 0 | 0 
5 | The_Mann | 0 | 1 

返回:

id | username | blocked | online 
2 | The_Boss | 0 | 0 
3 | The_Dude | 1 | 1 
4 | The_Kind | 0 | 0 
5 | The_Mann | 0 | 1 

回答

1

你可以組的結果通過用戶ID和姓名,並採取最高狀態:

SELECT id, username, MAX(blocked), MAX(online) 
FROM  mytable 
GROUP BY id, username 
0

似乎你需要不同的值

SELECT distinct username, blocked, online 
from your_table 
order by username, blocked desc, online 
相關問題