在MYSQL數(shù)據(jù)庫(kù)中,一對(duì)多是非常常見(jiàn)的關(guān)系,指的是一個(gè)主表和一個(gè)或多個(gè)相關(guān)表之間的關(guān)系。在這種情況下,我們可以使用JOIN操作來(lái)檢索關(guān)系表中的數(shù)據(jù)。在此例子中,我們來(lái)看一下如何使用MYSQL來(lái)執(zhí)行一對(duì)多中的取第一條操作。
-- 創(chuàng)建主表 CREATE TABLE `main` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 創(chuàng)建從表 CREATE TABLE `sub` ( `id` int(11) NOT NULL AUTO_INCREMENT, `main_id` int(11) DEFAULT NULL, `sub_name` varchar(255) DEFAULT NULL, `sub_value` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_sub_main_idx` (`main_id`), CONSTRAINT `fk_sub_main` FOREIGN KEY (`main_id`) REFERENCES `main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 插入數(shù)據(jù) INSERT INTO `main` (`name`) VALUES ('Tom'); INSERT INTO `main` (`name`) VALUES ('Jerry'); INSERT INTO `main` (`name`) VALUES ('Mike'); INSERT INTO `sub` (`main_id`, `sub_name`, `sub_value`) VALUES (1, 'sub1', 10); INSERT INTO `sub` (`main_id`, `sub_name`, `sub_value`) VALUES (1, 'sub2', 20); INSERT INTO `sub` (`main_id`, `sub_name`, `sub_value`) VALUES (2, 'sub3', 30); INSERT INTO `sub` (`main_id`, `sub_name`, `sub_value`) VALUES (2, 'sub4', 40); INSERT INTO `sub` (`main_id`, `sub_name`, `sub_value`) VALUES (3, 'sub5', 50); -- 取主表和從表第一條數(shù)據(jù) SELECT m.name, s.sub_name, s.sub_value FROM main m JOIN sub s ON m.id = s.main_id AND s.id = ( SELECT MIN(id) FROM sub WHERE main_id = m.id )
首先我們創(chuàng)建了一張主表和一張關(guān)系表,其中從表中的“main_id”引用了主表的ID,從而創(chuàng)建了一對(duì)多的關(guān)系。然后我們插入了一些數(shù)據(jù)來(lái)模擬實(shí)際的情況。
在查詢中,我們使用JOIN來(lái)連接主表和從表,然后使用子查詢來(lái)取得從表的第一條記錄。這個(gè)子查詢返回每個(gè)主表ID的最小的關(guān)系表ID,從而保證我們只檢索了每個(gè)關(guān)系的第一條記錄。
最終的結(jié)果應(yīng)該類似于以下內(nèi)容:
+-------+---------+-----------+ | name | sub_name| sub_value | +-------+---------+-----------+ | Tom | sub1 | 10 | | Jerry | sub3 | 30 | | Mike | sub5 | 50 | +-------+---------+-----------+
通過(guò)這個(gè)簡(jiǎn)單的例子,我們可以看到MYSQL如何處理一對(duì)多的關(guān)系,并且如何在檢索數(shù)據(jù)時(shí)只取每個(gè)關(guān)系的第一條數(shù)據(jù)。
上一篇外部CSS美化圖片代碼
下一篇css兩行.txt