MySQL 子查询和连接
2015-07-17 13:52
585 查看
1. 子查询
嵌套在查询内部,且在圆括号内。子查询可以包含多个关键字或条件,如 DISTINCT, GROUP BY, ORDER BY, LIMIT 等。
子查询的外层语句可以是:SELECT, INSERT, UPDATE, SET 或 DO
1.1 比较运算符引发的子查询
例如,平均值:mysql> SELECT ***G(goods_price) FROM tdb_goods;四舍五入保留两位小数:mysql> SELECT ROUND(***G(goods_price),2) FROM tdb_goods;
mysql> SELECT goods_id, goods_name, goods_price FROM tdb_goods WHERE goods_price >= (SELECT ROUND(***G(goods_price),2) FROM tdb_goods);
子查询返回多个结果时,可以用ANY, SOME 或 ALL 在前面修饰:
[NOT]IN 引发的子查询:
[NOT]EXISTS 用的比较少
先看下表的结构:DESC tdb_goods_cates;
这种方法也能查看表的结构。
[code]mysql> INSERT tdb_goods_cates (cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
查看结果:
2. 连接
使用关键字 ON 设定连接条件,也可用 WHERE 替代。通常用 ON 关键字设定链接条件,用 WHERE 关键字过滤结果。连接类型有3种:内连接、左外连接和右外链接。
2.1 内连接
内连接 INNER JOIN,显示左表和右表都符合的条件,相当于数学中的交集,如下所示:MySQL 中,JOIN, CROSS JOIN 和 INNER JOIN 是等价的。
例如:
[code]mysql> UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_name SET goods_cate = cate_id;
更新前:
更新后效果(这里只截取一个,其他类似):
这样可以有效减少所占空间。
2.2 左外连接
左外连接 LEFT [OUTER] JOIN,显示左表的全部和右表中符合连接条件的记录,如下所示:2.3 右外连接
有外链接 RIGHT [OUTER] JOIN,跟左外连接相反,即显示右表的全部和左表中符合连接条件的记录,如下所示:慕课网 MySQL 学习笔记
相关文章推荐
- MySQL删除表方式差异
- mysql移动列的顺序sql语句
- Mysql主从配置,实现读写分离
- Mysql主从配置,实现读写分离
- mysql命令集
- mysql 编译错误
- mysql搜索所有符合 条件的列名
- 使用C语言调用mysql数据库编程实战以及技巧
- Mysql 索引
- MySQL详解--锁
- mysql 常见问题
- 【Mysql】外键级联与级联的劣势
- mysql配置远程访问
- mysql_connect的$new_link参数
- Mysql5.6―分区表及独享表空间
- 解决MYSQL不能远程连接的问题
- 每天进步一点达——MySQL——myisampack
- mysql sql长度限制解决
- mysql 删除重复数据sql声明
- mysql数据表按照某个字段分类输出