前言

今天小编在改bug的时候遇到一个既简单又让人头疼的问题,由于底层封装的执行sql语句的方法中没有合适我的,所以我只能在我的D层动手脚了……

经验

下面来说说我今天的情况:

我们新建一个抽奖活动的时候需要绑定奖品,在绑定的时候肯定要去奖品池里查看一下我们填的这个奖品ID是否存在,如果存在就可以添加,不存在的话需要先去添加奖品,再进行绑定。由于我的奖品信息是可以动态添加多条的,所以我在进行查询的时候,传入的是一个奖品ID的数组,然后去依次的查询。之前使用的是一个for循环的语句,直接调的底层方法去查询,但是这个底层方法并不是我们想要的样子,是当这个查询语句没问题的时候就会返回true,只有发生异常的时候才会返回false,所以明显跟我们的需求不对应。所以我只能换了一种方法,动态拼接select语句……

分享

思路到了这就开始执行了,但是语句拼好了,那么当多个奖品的时候,我要怎么同时执行这些select语句呢?后来查到了可以使用union关键字来进行联合查询,下面我就开始给大家分享一下……

1、union:联合的意思,即把两次或多次查询结果合并起来。

2、   要求:两次查询的列数必须一致

3、 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准

4、union会去掉重复的行,如果想保留重复的行,需要使用union all

5、如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选

例:(select * from a order by id) union (select * from b order id);

6、在子句中,order by 需要配合limit使用才有意义。如果不配合limit使用,会被语法分析器优化分析时去除

7、如果查询两个表中数据,两个表的字段是不一样的,

table1: (id,createDate,lastUpdateDate,desc,num,hashCode),

table2: (id,createDate,lastUpdateDate,desc)

如果现在使用: select * from table1 UNION ALL select * from table2 则是不会成功的, 数据库为报:

Error  The used SELECT statements have a different number of columns

这是提示查询的两张表的字段不统一,如果table1比table2的字段内容多,可以使用空字符串来代替:

select id,createDate,lastUpdateDate,desc,num,hashCode from table1 UNION ALL select                                             id,createDate,lastUpdateDate,desc,'','' from table2

如果里面有不想要的,千万要记住前面查询内容要和后面查询内容的字段个数要一样,前面你查询4个,后面也要相应的放4个,这样就不会提示参数数量不同的错误了。

8、从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。

下面小编放上自己项目中的代码,以便大家借鉴:

public static bool Selectrewardinfo(string[] RewardIDstr1)

{

StringBuilder sbSql1 = new StringBuilder();

for (int i = 0; i < RewardIDstr1.Length - 1; i++)

{

sbSql1.Append("SELECT RewardID FROM ta_reward_info WHERE RewardID = ");

sbSql1.Append("'" + RewardIDstr1[i] + "'union");

}

sbSql1.Append(" SELECT RewardID FROM ta_reward_info WHERE RewardID = ");

sbSql1.Append("'" + RewardIDstr1[RewardIDstr1.Length - 1] + "'");

string sql = sbSql1.ToString();

List List = GetList1(sql);

bool flag;

if (List.Count < RewardIDstr1.Length)

{

flag = false;

}

else

{

flag = true;

}

return flag;

}

总结

经历了这么多,小编总结出来的只有一句话,那就是——方法总比问题多!没有我们解决不了的问题!加油~~

mysql多条语句union_Mysql同时执行多个select语句——union相关推荐

  1. MySQL实战 | 01 当执行一条 select 语句时,MySQL 到底做了啥?

    原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了, ...

  2. mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...

  3. mysql一秒查询次数_单个select语句实现MySQL查询统计次数

    单个select语句实现MySQL查询统计次数 单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来? My ...

  4. mysql查询单表的销售额_MYSQL select语句的单表查询

    MYSQL select语句的单表查询 发布时间:2020-05-29 13:19:48 来源:亿速云 阅读:131 作者:Leah 这篇文章运用了实例代码展示select语句的单表查询的用法,代码非 ...

  5. mysql sql 子查询 执行顺序_MySQL,SQL语句执行顺序

    1.SQL执行顺序: select 考生姓名, max(总成绩) asmax总成绩fromtb_Gradewhere 考生姓名 is not null group by考生姓名having max(总 ...

  6. oracle并发执行max,跪求大量并发执行insert into select语句的方案

    现在有数十万张表要从A库通过insert into tablename select * from tablename@dblink的方式导入到B库中. B机上80个cpu,160G内存.希望能够大量 ...

  7. python操作mysql数据库一次执行多条SQL语句

    当我们进行接口自动化后会造成许多表造成数据,一条一条删除就得一次又一次的连接数据库~~~废话不多说,直接上干货 导入第三方库的方法 from pymysql.constants import CLIE ...

  8. mysql多个select_mysql – 加入两个select语句

    谁能告诉我为什么以下不起作用?它抱怨两个选择之间的连接关键字附近有语法错误. SELECT * FROM ( select * from orders_products inner JOIN orde ...

  9. 一文搞懂select语句在MySQL中的执行流程!

    MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多年后,想跳槽进入大厂, ...

  10. 原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!

    大家好,我是冰河~~ MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多 ...

最新文章

  1. 分析一次STP无法生效的故障
  2. 1月6日 作业 穷举
  3. python 仪表盘数据显示_跟小白学Python数据分析——绘制仪表盘
  4. Windows Server 2008 部署权限管理RMS
  5. 通过反射突破访问修饰符,调用private私有的方法
  6. c语言列车调度 栈,这个用栈调度火车的程序到底是怎么回事?
  7. 语音识别技术发展迅速,这本书是你需要的全方位解读语音识别的最新著作!
  8. 调试器无法终止一个或多个进程_EXCEL按多个分隔符号无法分列,没关系,一个M函数全搞定...
  9. Linux学习笔记——CentOS
  10. 创造与魔法服务器多久维护一次,创造与魔法维护大概多久 | 手游网游页游攻略大全...
  11. 【01月11日】【精彩电影合集】【10部】【亲测】【Lsyq5647发布】
  12. lbp2900打印机linux驱动下载,佳能LBP2900+驱动下载-佳能LBP2900+打印机驱动下载 V3.30官方版--pc6下载站...
  13. 三角公式(三角函数)
  14. 谷歌雅虎新闻大战-两种路线的PK
  15. 借助python用Tushare查询股票价格并存入Mysql数据库中
  16. 2022年京东活动时间表,今年下半年何时活动力度最大?
  17. ARP-attrack ARP内网毒化/欺骗攻击
  18. DigiPCBA设计工具初体验!!!
  19. Sklearn官方文档中文整理6——交叉分解,朴素贝叶斯和决策树篇
  20. 会员管理系统源码 php语言开发 可用于美容店,理发店,服装店

热门文章

  1. 程序员出身的史玉柱,曾写了50万行代码,他的编程水平怎样?
  2. 申论(写作篇)之花木体申论写作法
  3. Element组件--Upload文件/图片上传
  4. linux的tomcat日志,linux下查看tomcat的日志
  5. python中fact_python中fact函数使用
  6. 不能理解命令行选项 “n”_如何理解命令行
  7. 贪吃蛇html对战,贪吃蛇.html
  8. 不错的javascript极品日历
  9. 浅谈微博、微信公众号、今日头条三者的区别
  10. 我的世界java版安装mod手机版,我的世界国际版手机版