SQL-запрос работает в консоли MariaDB, но не в Python Pymysql
Мой SQL-запрос работает в CLI MariaDB, но не работает в Python Pymysql.
Мои требования:
Я хочу получить номер записи (COUNT (*)) с тем же именем пользователя, а затем получить ранг(rowNo) для каждого пользователя, если два имени пользователя имеют одинаковые записи (COUNT (*)), ранг(rowNo) будет также быть таким же (@rowNo:=@rowNo).
Выпуск:
Ниже SQL работает в CLI MariaDB, одинаковое количество записей имеет одинаковый ранг (rowNo). Но в Python Pymysql, то же количество reocord имеет другой ранг (rowNO), оно будет увеличиваться (@rowNo:=@rowNo+1). Зачем?
art_sql = "SELECT T2.rowNo, T2.username, T2.art_number \
FROM \
(SELECT T1.art_number, \
T1.username, \
IF(@c=T1.art_number,@rowNo:=@rowNo,@rowNo:=@rowNo+1) AS rowNo, \
@c:=T1.art_number \
FROM \
( \
SELECT username,COUNT(*) AS art_number \
FROM %s \
GROUP BY username \
ORDER BY art_number DESC \
)T1 \
)T2, (SELECT @rowNo:=0,@c:=0)T3 \
WHERE T2.username='%s';" \
% (self.__article_table, username)
Кстати, у меня похожий SQL ниже не имеют этой проблемы:
rev_sql = "SELECT T2.rowNo, T2.username, T2.total_revenue \
FROM \
(SELECT T1.total_revenue, \
T1.username, \
IF(@c=T1.total_revenue,@rowNo:=@rowNo,@rowNo:=@rowNo+1) AS rowNo, \
@c:=T1.total_revenue \
FROM \
( \
SELECT username,SUM(money) AS total_revenue \
FROM %s \
GROUP BY username \
ORDER BY total_revenue DESC \
)T1 \
)T2, (SELECT @rowNo:=0,@c:=0)T3 \
WHERE username='%s';" \
% (self.__article_table, username)
Не могли бы вы помочь, чтобы ответить на это? Благодаря ~
1 ответ
IF(@c=T1.total_revenue,@rowNo:=@rowNo,@rowNo:=@rowNo+1) AS rowNo, \ @c:=T1.total_revenue попробовать IF(@c=T1.total_revenue,@rowNo:=@rowNo,@rowNo:=@rowNo+1) AS rowNo, \ (@c:=T1.total_revenue)