【发布时间】:2020-12-07 00:34:34
【问题描述】:
我有 2 个表:usuario (users) (id,email,active,id_rol) 和 usuario_puntos (users_points)(id,id_usuario,points) 我需要按用户的点检索用户具有 rol=3 和 active =1 顺序的用户列表。
这是我检索所有用户的查询,按位置排序
SELECT @row_number:=CASE
WHEN
@puntos <> puntos THEN @row_number + 1
ELSE
@row_number END AS posicion,
@puntos:=puntos puntos,
id_usuario,
email,
id_rol
FROM usuario_puntos as up
inner join usuario as u on up.id_usuario=u.id
,
(SELECT @puntos:=0,@row_number:=0) AS t
ORDER BY puntos DESC
这就是响应
当我添加 其中 u.id_rol=3 和 active=1 查询看起来像:
SELECT @row_number:=CASE
WHEN
@puntos <> puntos THEN @row_number + 1
ELSE
@row_number END AS posicion,
@puntos:=puntos puntos,
id_usuario,
email,
id_rol
FROM usuario_puntos as up
inner join usuario as u on up.id_usuario=u.id
,
(SELECT @puntos:=0,@row_number:=0) AS t
where u.id_rol=3 and active=1
ORDER BY puntos DESC
响应的位置不正确
而且我不知道在哪里添加这个功能! 任何想法?谢谢!
更新 目前的表怎么样 乌苏里奥:
ID Email Active id_rol
1 asd@asd.com true 3
2 qwe@asd.com false 3
3 zxc@asd.com true 3
4 asd@asd.com true 2
Usuario_puntos:
id id_usuario puntos Some Other Stuffs...
1 1 100 xxxx
2 2 50 yyyy
4 3 200 zzzz
【问题讨论】:
-
您能否为您的结果提供一些示例数据。基本上,要事先排序的数据气体,总线,因为我看不到你从哪里得到你的结果,所以不可能做出建议
标签: mysql sql join where-clause window-functions