mysql联合查询union的用法示例
web项目中经常会碰到整站搜索的问题,即客户希望在网站的搜索框中输入一个词语,然后在整个网站中只要包含这个词的页面都要出现在搜索结果中。由于一个web项目不可能用一张表就全部搞定的,所以这里一般都是要用union联合搜索来解决整个问题的。
下面列举一下本次使用的union联合搜索的sql语句,方便下次备忘。
select * from (SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND `subject` LIKE '%调整图片%' ORDER BY `add_time` DESC) as t1 union all select * from (SELECT `id`,`class_name` AS `subject` FROM `web_class` WHERE `active`='1' AND `class_name` LIKE '%调整图片%' ORDER BY `class_id` DESC) as t2 union select * from (SELECT `id`,`subject` FROM `article` WHERE `active`='1' AND (`subject` LIKE '%调整%' OR `subject` LIKE '%图片%') ORDER BY `add_time` DESC) as t3;
以上SQL语句的联合查询主要用到了union all和union,至于这两者的区别就是union all会列举所有符合条件的查询结果,而union会将所有符合条件的查询结果做一下去除重复结果的筛选。
对于以上SQL语句的解释就是由于article表和web_class表分属两个不同的表,所以这里不用去除重复结果。然而以上联合查询的第三个分支的sql查询语句是由分词然后组合出来的查询语句,这条sql语句查询的结果是肯定包含第一个分支sql语句的查询结果的,这里就显得没必要了,所以没有使用all而去掉重复的查询结果。
您可能感兴趣的文章
- mysql将unix时间戳转为日期格式,MySQL查询当前时间
- MySQL使用limit 1提高查询效率
- MySQL索引操作命令(创建索引、重建索引、查询索引、删除索引)总结
- mysql中优化sql语句查询的30种方法
- 总结mysql服务器查询慢原因与解决方法
- 针对MySQL提高百万条数据的查询速度优化
- MySQL的limit查询优化
- mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。