2015-10-17 63 views
0

我需要在列中找出相同值的数量并给它们一个序列号。 例如,如果我有一个表与数据的列d:MySQL:按外观顺序创建一个序列

d





Ç
Ç
d

我需要用数据的连续编号创建一个列S:

DS
A 1
A 2
乙1
A 3
B 2
的C 1
的C 2
d 1

正如你可以例如看到有是三个A,他们根据外观顺序得到一个数字。与其余数据一样。 我不是很熟悉SQL,有人可以帮忙吗?

+3

你有任何其他的列,以确定例如你给的例子?如果没有,那么不能保证您将按照您在示例中提到的相同顺序获取数据。如果是,那么也提供该栏目的详细信息。 – Utsav

+0

SQL中的行没有顺序 – Strawberry

+0

然后每次执行查询时结果可能会不同 –

回答

1

假设有在表中的id场决定行顺序,可以使用下面的查询,以获得期望的结果:

SELECT id, D, (SELECT COUNT(*) + 1 
       FROM mytable AS t2 
       WHERE t1.D = t2.D AND t2.id < t1.id) AS S 
FROM mytable AS t1    

Demo here

+0

是的,这是我正在寻找的。现在,如果我使用LOAD DATA INFILE和一些自动增量字段,我保证通过它们在csv文件中的顺序来获取行吗? – pankal

+0

如果'LOAD DATA INFILE'按照它们在excel文件中列出的顺序将数据插入到表中,则确保auto_increment字段将反映该顺序。 –