我有一大堆例如2個用戶名爲「悟空」和3個用戶名「sliceoflife」重複的用戶名結束的毗連增量INT等在重複的用戶名
我知道這是相當簡單的事在PHP中,但有沒有辦法在MySQL中直接連接一個增量整數。
結果應該給我一個例子再次
悟空 goku1 sliceoflife sliceoflife1 sliceoflife2 等等......如果我基礎上,Date
列DateLastActive
的增量
甚至會更好。
我有一大堆例如2個用戶名爲「悟空」和3個用戶名「sliceoflife」重複的用戶名結束的毗連增量INT等在重複的用戶名
我知道這是相當簡單的事在PHP中,但有沒有辦法在MySQL中直接連接一個增量整數。
結果應該給我一個例子再次
悟空 goku1 sliceoflife sliceoflife1 sliceoflife2 等等......如果我基礎上,Date
列DateLastActive
的增量
甚至會更好。
應該能夠像這樣運行它(其中id
代表您自動編號)
UPDATE table SET
username = CONCAT(username, id)
我很欣賞答案,雖然這不是我要求的結果。 – TopCheese
創建表/插入數據。
CREATE TABLE USER (
NAME VARCHAR(255) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO USER (NAME) VALUES('goku');
INSERT INTO USER (NAME) VALUES('goku');
INSERT INTO USER (NAME) VALUES('sliceoflife');
INSERT INTO USER (NAME) VALUES('sliceoflife');
INSERT INTO USER (NAME) VALUES('sliceoflife');
查詢
SELECT * FROM USER
結果
name
-------------
goku
goku
sliceoflife
sliceoflife
sliceoflife
,這是可能與用戶的變量。
查詢
SELECT
*
, (
CASE
WHEN
@user = User.name
THEN
@rank := @rank + 1
WHEN
@user != User.name
THEN
@rank := ''
END
)
AS
rank
, @user := User.name
FROM
USER
CROSS JOIN (
SELECT
@user := ''
, @rank := ''
)
AS
init_user_vars
ORDER BY
User.name ASC
結果
name @user := '' @rank := '' rank @user := User.name
----------- ----------- ----------- ------ --------------------
goku goku
goku 1 goku
sliceoflife sliceoflife
sliceoflife 1 sliceoflife
sliceoflife 2 sliceoflife
現在很容易CONCAT姓名和軍銜。 您需要將上述查詢作爲交付表使用。
SELECT
(
CASE
WHEN rank IS NOT NULL
THEN CONCAT(NAME, rank)
WHEN rank IS NULL
THEN CONCAT(NAME)
END
)
AS
NAME
FROM (
SELECT
*
, (
CASE
WHEN
@user = User.name
THEN
@rank := @rank + 1
WHEN
@user != User.name
THEN
@rank := ''
END
)
AS
rank
, @user := User.name
FROM
USER
CROSS JOIN (
SELECT
@user := ''
, @rank := ''
)
AS
init_user_vars
ORDER BY
User.name
)
AS
user_ranked
結果
name
--------------
goku
goku1
sliceoflife
sliceoflife1
sliceoflife2
我會試試這個謝謝你。 – TopCheese
請一些示例數據 –
如果'username'用於在其日誌也許應該有一個'UNIQUE'指數反正共享CREATE TABLE語句。 – CD001
@ CD001這是我正在嘗試更正的遷移數據。 – TopCheese