我有一个格式如下的表格
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中可行吗?如果是这样,我该怎么办呢?
任何提示将不胜感激。
答案 0 :(得分:1)
在其他RDBMS中,通过使用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
对于获得相同的序列非常重要 没有。重复日期