我有一个表testTble的列testVal包含重复值。我可以使用DISTINCT(testVal)找到列的每个唯一值。但我想为列的每个唯一值设置一个特定的名称。
比如:
我在数据库中运行查询并找到了这些不同的值。

SELECT DISTINCT(testVal) AS web FROM `testTble`

输出:
web
169.254.15.169
10.0.0.91
192.168.80.47
10

现在我想设置这些值的唯一名称,如下所示:
169.254.15.169web21
10.0.0.91web22
我怎么能给你起这样的名字?

最佳答案

在MySQL 8+中,可以使用row_number()

select test_val, row_number() over (order by test_val)
from t
group by test_val;

在早期版本中,可以使用变量:
select test_val, (@rn := @rn + 1) as seqnum
from t cross join
     (select @rn := 0) params
group by test_val;

在这两种情况下,“name”都是一个数值,但这似乎与您想要做的事情一致。

10-04 12:06
查看更多