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中只有符合联结条件的记录,而右联结相反,这样也就不会混淆了。其实你们回忆高等教育出版社出版的《数据库系 统概论》书中讲到关系代数那章(就是将笛卡儿积和投影那章)的内容,相信不难理解这些联结功能的内涵。