select语句中的if语句中的postgreSQL声明变量
我有一个mySQL语句需要转换为postgreSQL,但是当我在postgreSQL中运行以下SQL时,我得到错误:语法错误在或接近:= 根据我的发现:=似乎是在postgreSQL中声明变量的方法select语句中的if语句中的postgreSQL声明变量,sql,postgresql,window-functions,Sql,Postgresql,Window Functions,我有一个mySQL语句需要转换为postgreSQL,但是当我在postgreSQL中运行以下SQL时,我得到错误:语法错误在或接近:= 根据我的发现:=似乎是在postgreSQL中声明变量的方法 SELECT memberid, conseq, displayname, foldername, apiloginid, countryid, members.email FROM ( SELECT MemberID,
SELECT memberid, conseq, displayname, foldername, apiloginid, countryid, members.email
FROM ( SELECT MemberID,
Position,
CreateDat,
@r:=IF(@m = MemberID, @r + 1, 1) AS conseq,
@m:= MemberID
FROM memberevents,
(SELECT @r:= 0) r,
(SELECT @m:= 0) m
where position=1
group by eventid
ORDER BY CreateDat DESC
) t, members
where members.id=t.memberid
ORDER BY Conseq DESC
LIMIT 3;
不需要这样的攻击,只需使用窗口功能:
SELECT memberid, conseq, displayname, foldername, apiloginid, countryid, members.email
FROM (
SELECT MemberID,
Position,
CreateDat,
row_number() over (partition by memberID order by createDat) as AS conseq
FROM memberevents
where position=1
group by eventid
) t
JOIN members ON members.id=t.memberid
ORDER BY Conseq DESC
LIMIT 3;
我不确定派生表中的GROUPBY,因为我不知道MySQL实际上是如何在派生表中使用变量赋值的 对于它的价值,:=赋值给Postgres中的值,而不是声明它。