mysql连接优先级设置_MySQL的按优先级等效连接
這是一個舊主題,但是由于我在另一個論壇中遇到了這個問題,所以我想在這里添加它。對于這種情況,我創建了一個存儲過程,該存儲過程經過硬編碼以處理特定情況。當然這樣做確實有一些缺點,因為并非所有用戶都可以隨意創建存儲過程。
考慮具有節點和子節點的下表:
CREATE TABLE nodes (
parent INT,
child INT
);
INSERT INTO nodes VALUES
( 5,? 2), ( 5, 3),
(18, 11), (18, 7),
(17,? 9), (17, 8),
(26, 13), (26, 1), (26,12),
(15, 10), (15, 5),
(38, 15), (38, 17), (38, 6),
(NULL, 38), (NULL, 26), (NULL, 18);
使用此表,以下存儲過程將計算一個由所提供節點的所有后代組成的結果集:
delimiter $$
CREATE PROCEDURE find_parts(seed INT)
BEGIN
-- Temporary storage
DROP TABLE IF EXISTS _result;
CREATE TEMPORARY TABLE _result (node INT PRIMARY KEY);
-- Seeding
INSERT INTO _result VALUES (seed);
-- Iteration
DROP TABLE IF EXISTS _tmp;
CREATE TEMPORARY TABLE _tmp LIKE _result;
REPEAT
TRUNCATE TABLE _tmp;
INSERT INTO _tmp SELECT child AS node
FROM _result JOIN nodes ON node = parent;
INSERT IGNORE INTO _result SELECT node FROM _tmp;
UNTIL ROW_COUNT() = 0
END REPEAT;
DROP TABLE _tmp;
SELECT * FROM _result;
END $$
delimiter ;
總結
以上是生活随笔為你收集整理的mysql连接优先级设置_MySQL的按优先级等效连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.0 5.1_mysql从
- 下一篇: antd 给input设置值_Antd