2015-03-23 3 views
1

У меня есть таблица следующего форматаMySQL: счетчик строк для каждой уникальной даты

Date  | Text_Field 
2014/12/03 | Hi 
2014/12/03 | Hello 
2014/12/03 | Bye 
2014/12/03 | Ok 
2014/12/03 | Yes 
2014/12/04 | When 
2014/12/04 | Blah 

Я хотел бы получить таблицу выступать в качестве

Date | Text_Field 
1 | Hi 
1 | Hello 
1 | Bye 
1 | Ok 
1 | Yes 
2 | When 
2 | Blah 

Здесь значение строки изменится, как только дата меняется. Я знаю, что я должен использовать SELECT @row := @row + 1 FROM (row := 0) t где-то в моем запросе. Тем не менее, я не уверен, как получить уникальность дат как условие на прилавке. Возможно ли это в MySQL? Если да, то как мне это сделать? Любые советы будут оценены.

ответ

1

В других СУБД легче получить такие результаты, используя функции окна Mysql, не имеют этих функций, вы можете играть с определенными пользователем переменными одну переменную, которая будет определять изменение даты, а другая увеличит счетчик

SELECT t.row_num,t.Text_Field 
FROM (
SELECT *, 
@r:= CASE WHEN @g = `Date` THEN @r ELSE @r + 1 END row_num, 
@g:= `Date` 
FROM your_table 
CROSS JOIN(SELECT @g:= NULL,@r:=0) a 
ORDER BY `Date` 
) t 

Примечание ORDER BY Date важно для того, чтобы получить ту же последовательность нет. для повторных дат

Demo

+0

Именно то, что я искал. Спасибо, выберем в качестве верхнего ответа, когда у меня появится такая возможность. – Black

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