Mysql
用序號替換文本的查詢
我有一個圖像數據庫,預設排序是“名稱”列,“描述”列內容在表中所有文件中完全相同。我需要的是分別用數字替換“描述”中的某些文本。
所有項目的“描述”條目範例:
"Photo number # more text text"
查詢應將
"#"
符號替換為按“名稱”列排序的序號。第一行應該在哪裡,第二行應該在哪裡Photo number 1
,Photo number 2
等等。我嘗試了一些使用 row_number 的查詢(在 phpmyadmin 中),但我不確定這是否是正確的方法或什麼.. 因為它們不起作用。
伺服器版本:5.7.24-0ubuntu0.16.04.1 - (Ubuntu)
使用變數獲取自動遞增的值並
description
使用該值進行更新。或者使用Rick James的答案並在表格中添加一個排序列作為每張圖片的數字。create table t (name varchar(10), description varchar(100)); insert into t values ('b', '"Photo number # - Gallery name"'); insert into t values ('c', '"Photo number # - Gallery name"'); insert into t values ('a', '"Photo number # - Gallery name"'); insert into t values ('x', '"Photo number # - Gallery name"');
update t join (select name, @num := @num + 1 as num from t, (select @num := 0) t order by name) t2 on t2.name = t.name set description = replace(description, '#', cast(num as varchar(10)));
select * from t order by name;
姓名 | 描述 :--- | :------------------------------ 一個 | “照片編號 1 - 畫廊名稱” 乙 | “照片編號 2 - 畫廊名稱” c | “照片編號 3 - 畫廊名稱” x | “照片編號 4 - 畫廊名稱”
db<>在這裡擺弄