欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 循環遍歷兩張表

錢淋西1年前10瀏覽0評論

MySQL 是一個開源的關系型數據庫管理系統,被廣泛應用于各種 Web 應用開發中。在實際的開發過程中,常常會遇到需要循環遍歷兩張表的情況,本文將介紹如何使用 MySQL 來實現這一功能。

-- 首先,我們需要創建兩張表。以下是兩張示例表的SQL代碼:
CREATE TABLE `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `table2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`table1_id` int(11) NOT NULL,
`description` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `table1_id` (`table1_id`),
CONSTRAINT `table2_ibfk_1` FOREIGN KEY (`table1_id`) REFERENCES `table1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- table1 表包含 id 和 name 兩個字段,table2 表包含 id、table1_id 和 description 三個字段。其中,table2 表的 table1_id 字段為外鍵,引用了 table1 表的 id 字段。
-- 接下來,我們將通過以下代碼遍歷兩個表:
DELIMITER //
CREATE PROCEDURE traverse_table1_table2()
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE j INT DEFAULT 1;
DECLARE count1 INT DEFAULT 0;
DECLARE count2 INT DEFAULT 0;
DECLARE table1_id INT DEFAULT 0;
DECLARE name VARCHAR(50);
SELECT COUNT(*) INTO count1 FROM table1;
SELECT COUNT(*) INTO count2 FROM table2;
WHILE i<= count1 DO
SELECT id, name INTO table1_id, name FROM table1 WHERE id = i;
WHILE j<= count2 DO
DECLARE table1Id INT DEFAULT 0;
DECLARE description VARCHAR(255);
SELECT table1_id, description INTO table1Id, description FROM table2 WHERE id = j;
IF table1_id = table1_id THEN
SELECT CONCAT(name, ' - ', description) AS 'Info';
END IF;
SET j = j + 1;
END WHILE;
SET i = i + 1;
SET j = 1;
END WHILE;
END //
DELIMITER ;
-- 以上代碼會創建一個名為 traverse_table1_table2 的存儲過程,該存儲過程會循環遍歷 table1 和 table2 兩張表,并輸出關聯的信息。
-- 最后,我們可以通過以下代碼來調用這個存儲過程:
CALL traverse_table1_table2();
-- 調用該存儲過程后,你將會看到輸出結果中的 name 和 description 字段已經被組合在了一起,形成了一條條有意義的信息。