我有一个表格,其中包含以下信息,这些信息是通过与其他表格的几个连接生成的,但没有显示唯一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应该是唯一的。因此,在更大的范围内,它看起来像:
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
答案 0 :(得分:1)
您可以按用户ID和名称对结果进行分组,并采用最大状态:
SELECT id, username, MAX(blocked), MAX(online)
FROM mytable
GROUP BY id, username
答案 1 :(得分:0)
似乎你需要不同的值
SELECT distinct username, blocked, online
from your_table
order by username, blocked desc, online