mysql多表联合查询操作实例分析
本文实例讲述了mysql多表联合查询操作。分享给大家供大家参考,具体如下
MySQL多表联合查询是MySQL数据库的一种查询方式,狼蚁网站SEO优化就为您介绍MySQL多表联合查询的语法,供您参考学习之用。
MySQL多表联合查询语法
mysql版本大于4.0,使用UNION
进行查询,示例如下
SELECT `id`, `name`, `date`, '' AS `type` FROM table_A WHERE 条件语句…… UNION SELECT `id`, `name`, `date`, '未完成' AS `type` FROM table_B WHERE 条件语句…… ORDER BY `id` LIMIT num;
mysql版本小于4.0,需要建立临时表,分为三步,示例如下
第一步建立临时表tmp_table_name并插入table_A中的相关记录
第二步从table_B中取得相关记录插入临时表tmp_table_name中
第三步从临时表tmp_table_name中取出记录
SELECT FROM tmp_table_name ORDER BY id DESC
union和order by、limit区别分析
代码示例:
CREATE TABLE `test1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `desc` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
1. 以下查询会报错误[Err] 1221 - Incorrect usage of UNION and ORDER BY
代码示例:
select from test1 where name like 'A%' order by name union select from test1 where name like 'B%' order by name
修改为
代码示例:
select from test1 where name like 'A%' union select from test1 where name like 'B%' order by name
说明,在union中,不用括号的情况下,只能用一个order by(思考union两边的order by的列名不一样时,会出现什么样的结果?),这会对union后的结果集进行排序。
修改为
代码示例:
(select from test1 where name like 'A%' order by name) union (select from test1 where name like 'B%' order by name)
也是可以的,这两个order by在union前进行。
2. 同样
代码示例:
select from test1 where name like 'A%' limit 10 union select from test1 where name like 'B%' limit 20
相当于
代码示例:
(select from test1 where name like 'A%' limit 10) union (select from test1 where name like 'B%') limit 20
即后一个limit作用于的是union后的结果集,而不是union后的select。
也可以用括号括起来,以得到预期的结果
3. UNION和UNION ALL区别
union会过滤掉union两边的select结果集中的重复的行,而union all不会过滤掉重复的行。
代码示例:
(select from test1 where name like 'A%' limit 10) union (select from test1 where name like 'B%' limit 20)
狼蚁网站SEO优化试一个年龄段分析的复杂sql语句
( SELECT '5~19' AS `age`, SUM(`impression`) AS impression, SUM(`click`) AS click, sum(`cost`) AS cost FROM `adgroup_age_report` WHERE ( ( (`age` <= 19) AND (`adgroup_id` = '61') ) AND (`date` >= '2015-11-22') ) AND (`date` <= '2017-02-20') ) UNION ( SELECT '20~29' AS `age`, SUM(`impression`) AS impression, SUM(`click`) AS click, sum(`cost`) AS cost FROM `adgroup_age_report` WHERE ( ( ((`age` <= 29) AND(`age` >= 20)) AND (`adgroup_id` = '61') ) AND (`date` >= '2015-11-22') ) AND (`date` <= '2017-02-20') ) UNION ( SELECT '30~39' AS `age`, SUM(`impression`) AS impression, SUM(`click`) AS click, sum(`cost`) AS cost FROM `adgroup_age_report` WHERE ( ( ((`age` <= 39) AND(`age` >= 30)) AND (`adgroup_id` = '61') ) AND (`date` >= '2015-11-22') ) AND (`date` <= '2017-02-20') ) UNION ( SELECT '40~49' AS `age`, SUM(`impression`) AS impression, SUM(`click`) AS click, sum(`cost`) AS cost FROM `adgroup_age_report` WHERE ( ( ((`age` <= 49) AND(`age` >= 40)) AND (`adgroup_id` = '61') ) AND (`date` >= '2015-11-22') ) AND (`date` <= '2017-02-20') ) UNION ( SELECT '50~59' AS `age`, SUM(`impression`) AS impression, SUM(`click`) AS click, sum(`cost`) AS cost FROM `adgroup_age_report` WHERE ( ( ((`age` <= 59) AND(`age` >= 50)) AND (`adgroup_id` = '61') ) AND (`date` >= '2015-11-22') ) AND (`date` <= '2017-02-20') )
更多关于MySQL相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》及《》
希望本文所述对大家MySQL数据库计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程