2014-01-28 2 views
0

У меня есть табличный тест с sessionID. Я хочу сгруппировать идентификаторы и добавить рябины к каждой записи на ID. Я использовал MSSQL Row_Number() over(order by) in MySql и добавил if-statement (для группы на session_ID). Однако это не работает. Кто-нибудь знает, почему это не работает?MySQL Добавить рябины на ID

SET @row:=0 
SET @sessionID:=0 

SELECT 
    session_ID 
    @row:=if(@sessionID = session_ID, @row+1, 1) AS row_num 
    @sessionID := session_ID 
FROM test 

ответ

1

Вам нужна запятая после row_num и вам нужен order by:

SET @row:=0; 
SET @sessionID:=0; 

SELECT 
    session_ID, 
    @row:=if(@sessionID = session_ID, @row+1, 1) AS row_num, 
    @sessionID := session_ID 
FROM test 
ORDER BY session_ID; 

Вы можете написать это как один запрос:

SELECT session_ID, 
     @row:=if(@sessionID = session_ID, @row+1, 1) AS row_num, 
     @sessionID := session_ID 
FROM test cross join 
    (select @row := 0, @sessionID := 0) 
ORDER BY session_ID; 
+0

+1, хотя после набора заявлений; отсутствуют – fancyPants

+0

Thnx, он работает. После SELECT session_id отсутствует запятая. – wijtje

Смежные вопросы