mysql 遞迴 mysql5 7遞迴使用

2021-10-25 14:14:30 字數 1057 閱讀 2979

背景:

伺服器使用阿里雲centos7+寶塔面板直接安裝.新建的mysql使用者缺少許可權無法建立函式。

報錯:this function has none of deterministic, no sql, or reads sql data。

操作步驟:

1.root使用者登入

mysql -u root -p

輸入密碼

set global log_bin_trust_function_creators=true;

2.mysql客戶端使用者執行(紅色部分跟實際業務表相關)

delimiter ;;

create function getchildren(orgid char)

returns varchar(4000)

begin

declare otemp varchar(4000);

declare otempchild varchar(4000);

set otemp = '';

set otempchild = cast(orgid as char);

while otempchild is not null

doset otemp = concat(otemp,',',otempchild);

select group_concat(id) into otempchild from sys_office where find_in_set(parent_id,otempchild) > 0;

end while;

return otemp;

end;

delimiter ;

3.對 find_in_set 這個函式的優化,這個好的辦法就是兩步查詢,切記,否則查詢慢大概9s出結果。

先查出來,放在乙個變數中

select getchildren('956b804590f4469392bf7fe10877cb7d') as ids

把變數拼接到 select 語句中

select * from sys_office a where find_in_set(a.id,#)>0

mysql5 7學習 mysql 5 7 學習

mysql uroot proot mysql5.7 mysql.user表沒有password欄位改 authentication string 一.建立使用者 命令 create user username host identified by password 例子 create user d...

mysql5 7如何開啟 mysql57怎麼開啟

開啟mysql57的方法 首先開啟winodws執行視窗 然後在開啟編輯框中輸入cmd命令 最後在終端介面中輸入 mysql hlocalhost uroot p123 即可顯示開啟mysql資料庫。windows下用命令列啟動mysql5.7 win菜單鍵即是在鍵盤左下角 ctrl控制 鍵與 al...

mysql5 7如何開啟 mysql57怎麼開啟

開啟mysql57的方法 首先開啟winodws執行視窗 然後在開啟編輯框中輸入cmd命令 最後在終端介面中輸入 mysql hlocalhost uroot p123 即可顯示開啟mysql資料庫。windows下用命令列啟動mysql5.7 win菜單鍵即是在鍵盤左下角 ctrl控制 鍵與 al...