http://my.oschina.net/adamboy/blog
php
MySQL多表鏈接查詢Left Join,Right Join php開源嘛數據庫
在講MySQL的Join語法前仍是先回顧一下聯結的語法,呵呵,其實連我本身都忘得差很少了,那就你們一塊兒溫習吧(若是內容有錯誤或有疑問,國內關於 MySQL聯結查詢的資料十分少,相信你們在看了本文後會對MySQL聯結語法有至關清晰的瞭解,也不會被Oracle的外聯結的(「+」號)弄得糊塗 了。spa
在SQL標準中規劃的(Join)聯結大體分爲下面四種:.net
個人數據庫中有兩張表,分別爲users和products以下:code
users表:
blog
products 表:圖片
users表:ci
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(40) collate utf8_unicode_ci NOT NULL,
`password` varchar(40) collate utf8_unicode_ci NOT NULL,
`status` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `name`, `password`, `status`) VALUES
(1, 'adam', '0000', 1),
(2, 'lht', '0000', 0),
(3, 'lihantuan', '0000', 0),
(4, 'lhq', '0000', 0),
(5, 'admin', '0000', 1);
unicode
Pruducts表:rem
CREATE TABLE `products` (1. 內聯結:select users.*,products.comefrom from users,products where users.name = products.name,查詢結果是(若是圖片不顯示,copy該語句到數據庫裏執行就能看到結果):
2. 外聯結:分爲外左聯結和外右聯結。 php開源嘛
左聯結A、B表的意思就是將表A中的所有記錄和表B中聯結的字段與表A的聯結字段符合聯結條件的那些記錄造成的記錄集的聯結,這裏注意的是最後出來的記錄集會包括表A的所有記錄。
右聯結A、B表的結果和左聯結B、A的結果是同樣的,也就是說:
Select A.name B.name From A Left Join B On A.id=B.id和Select A.name B.name From B Right Join A on B.id=A.id執行後的結果是同樣的。
舉例:外左聯結(Select A.name B.name From A Left Join B On A.id=B.id)
數據庫裏執行查詢:select users.*,products.comefrom from users left join products on users.name = products.name
將顯示以下:(若是圖片不顯示,copy該語句到數據庫裏執行就能看到結果)
執行:select products.*,users.password from products left join users on products.name = users.name
將顯示以下:
舉例外右聯結:Select A.name B.name From B Right Join A on B.id=A.id:
執行語句:select users.*,products.name from users right join products on users.name = products.name,將顯示以下結果:(若是圖片不顯示,copy該語句到數據庫裏執行就能看到結果)
3.全聯結:將兩個表中存在聯結關係的字段的全部記錄取出造成記錄集的聯結(這個不須要記憶,只要是查詢中提到了的表的字段都會取出,不管是否符合聯結條件,所以意義不大)。
4.無聯結:不用解釋了吧,就是沒有使用聯結功能唄,也有自聯結的說法。
這裏我有個比較簡便的記憶方法,內外聯結的區別是內聯結將去除全部不符合條件的記錄,而外聯結則保留其中部分。外左聯結與外右聯結的區別在於若是用A左聯 結B則A中全部記錄都會保留在結果中,此時B中只有符合聯結條件的記錄,而右聯結相反,這樣也就不會混淆了。其實你們回憶高等教育出版社出版的《數據庫系 統概論》書中講到關係代數那章(就是將笛卡兒積和投影那章)的內容,相信不難理解這些聯結功能的內涵。