一个简单的Mysql的联合查询列子
一个mysql的联合查询列子,很基本的,不过很实用。
先看数据表。数据表class:
-------------------------------
id cname
-------------------------------
1 男装
2 女皮裤
3 女彩棉
-------------------------------
class表存放的是产品的大类名称和其序号
数据表product:
-------------------------------
pid ptype pparent
-------------------------------
1 A01 1
2 A21 1
3 B10 2
4 C11 3
5 C01 2
-------------------------------
product表存放的是产品名称,和其所属大类的id(pparent)
现在要求显示所有产品序号、名称、所属类别,如下形式:
-------------------------------
序号 名称 类别
-------------------------------
1 A01 男装
2 A21 男装
3 B10 女皮裤
4 C11 女彩棉
5 C01 女皮裤
-------------------------------
这里要查询product表,根据pparent字段再读出对应的class表中pname字段。最传统的,可以用两个select语句实现,但是mysql中有联合查询语句可以简单的实现:
select product.*, class.* from product inner join class on product.pparent=class.id where product.pid is not null
在php中,通过这样查询出来的记录都放在数组里面,比如:
$myrow=mysql_fetch_array(mysql_query($sql));
那么$myrow数组中,前面存放的是product中的字段,后面存放的是class的字段。
相关文档:
一、什么是索引?
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得 ......
之前,由于客户要求在centOS下安装系统应用,因此有机会接触了一下CentOS,顺便也了解了下CentOS的常规操作,还有在CentOS下的MySQL相关操作。
目前技术框架使用JSF(richfaces、facelets)+Spring+JPA(OpenJPA),不使用数据库依赖的触发器或存储过程,所有业务逻辑在web服务器上执行,因此数据库基本不用考虑移 ......
user表:
id | name
———
1 | libk
2 | zyfon
3 | daodao
user_action表:
user_id | action
—————
1 | jump
1 | kick
1 | jump
2 | run
4 | swim
sql:
select id, name, action from user as u
left join user_action a on u.id = a.user_id
result:
id | ......
插入一条记录:
mysql> insert into table_name (column_name1,column_name2,.) values (value1,value2,..);
更新一条记录:
mysql> update tbl_name
s ......
在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如果内容有错误或有疑问,国内关于MySQL联结查询的资料十分少,相信大家在看了本文后会对MySQL联结语法有相当清晰的了解,也不会被Oracle的外联结的(“+”号)弄得糊涂了。
在SQL标准中规划的( ......