Mysql

用序號替換文本的查詢

  • September 4, 2019

我有一個圖像數據庫,預設排序是“名稱”列,“描述”列內容在表中所有文件中完全相同。我需要的是分別用數字替換“描述”中的某些文本。

所有項目的“描述”條目範例:

"Photo number # more text text"

查詢應將"#"符號替換為按“名稱”列排序的序號。第一行應該在哪裡,第二行應該在哪裡Photo number 1Photo 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<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/225993