Mysql实例Mysql联合查询UNION和Order by同时使用报错问题的解决
《Mysql实例Mysql联合查询UNION和Order by同时使用报错问题的解决办法》要点: MYSQL应用因此,常常出现这样的差错 MYSQL应用之后,也许有人会用到类似的查询 MYSQL应用为什么呢?难道UNION和ORDER BY 不克不及同时存在? MYSQL应用union和 order by 当然是可以同时存在的 MYSQL应用但是在使用union的时候,联合查询不仅仅是将数据集合合并 MYSQL应用再做一个试验来更充分的阐明这个问题 MYSQL应用创立一个这样的查询 MYSQL应用union MYSQL应用select * from [IND] where INDID=2 MYSQL应用 MYSQL应用但是,实际上得到的成果是和数据库里数据排列的顺序一样的 12345 MYSQL应用因此,可以得出结论,联合查询的成果是整个查询完成后得出的,而不是将子查询挨个完成后拼接的. select * from [IND] where INDID=4 MYSQL应用union MYSQL应用select * from [IND] where INDID=2 MYSQL应用order by INDID ASC/DESC 这样就可以对整个联合成果集进行排寻了. MYSQL应用 MYSQL应用如果是这样,在普通的查询中,TOP是在ORDER BY之后执行的,那么 select TOP 2 * from [IND] where INDID=4 MYSQL应用union MYSQL应用select * from [IND] where INDID=2 MYSQL应用order by INDID 这样是不是可以得到整个结果集排序后的最前面两条数据呢? MYSQL应用答案是弗成以. MYSQL应用虽然说在单句的查询中,TOP是在ORDER BY 之后执行,但是在联合查询中,这样写,TOP的作用域是在子查询里,因此TOP并没有对联合查询的结果集筛选,而只对它所写在的那便条查询里进行筛选,这就像是子查询里的WHERE语句一样,类似这样的筛选作用范围都是在子查询,不像ORDER BY 作用在整个联合查询. MYSQL应用 MYSQL应用用 rowcount MYSQL应用比起TOP来说,rowcount作为结果集截取置顶更加规范些,究竟不是依靠查询语句,而是直接设置查询语句获得结果集的数目. set rowcount 2 MYSQL应用select * from [IND] where INDID=4 MYSQL应用union MYSQL应用union MYSQL应用order by INDID ASC 形如以上查询语句.我们就可以做到春联合查询排序,并获得最上的两条数据了. MYSQL应用 欢迎参与《Mysql实例Mysql联合查询UNION和Order by同时使用报错问题的解决办法》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |