Mysql联合查询UNION和Order by同时使用报错问题的解决办法_MySQL
因此,常常出现这样的错误
select * from [IND] where INDID>10
union
select * from [IND] where INDID目前为止,还没有出现问
之后,也许有人会用到类似的查询
select * from [IND] where INDID>10 order by INDID desc
union
select * from [IND] where INDID此时就出现问题了,数据库报错。问题就出在order by上
为什么呢?难道UNION和ORDER BY 不能同时存在?
union和 order by 当然是可以同时存在的
但是在使用union的时候,联合查询不仅仅是将数据集合合并
他并不是将每个子查询一个一个查询出来后联接在一起,数据库是将整段查询语句理解之后统一查询得到的是整个的数据集合
另外order by在一个数据集合查询里也只能出现一次并且出现在最后。
因此,在联合查询里,order by 要写在最后一个子查询之后,并且,该排序是对整个联合查询出来的结果集排序的,并不是只对最后一个子查询排序
select * from [IND] where INDID>10
union
select * from [IND] where INDID这样就可以对我们联合查询出来的结果集进行整体排序,而不是只对最后一个子查询的结果集排序。
再做一个试验来更充分的说明这个问题
创建一个这样的查询
select * from [IND] where INDID=4
union
select * from [IND] where INDID=2
union
select * from [IND] where INDID=1
union
select * from [IND] where INDID=5
union
select * from [IND] where INDID=3
INDID是主键,在创建数据的时候,数据库里的顺序是12345
如果联合查询只是但存的将查询结果联接在一起,那么我们得到的结果应该是:42153
但是,实际上得到的结果是和数据库里数据排列的顺序一样的 12345
因此,可以得出结论,联合查询的结果是整个查询完成后得出的,而不是将子查询挨个完成后拼接的。
select * from [IND] where INDID=4
union
select * from [IND] where INDID=2
union
select * from [IND] where INDID=1
union
select * from [IND] where INDID=5
union
select * from [IND] where INDID=3
order by INDID ASC/DESC
这样就可以对整个联合结果集进行排寻了。
另外关于TOP?
如果是这样,在普通的查询中,TOP是在ORDER BY之后执行的,那么
select TOP 2 * from [IND] where INDID=4
union
select * from [IND] where INDID=2
union
select * from [IND] where INDID=1
union
select * from [IND] where INDID=5
union
select * from [IND] where INDID=3
order by INDID
这样是不是可以得到整个结果集排序后的最前面两条数据呢?
答案是不可以。
虽然说在单句的查询中,TOP是在ORDER BY 之后执行,但是在联合查询中,这样写,TOP的作用域是在子查询里,因此TOP并没有对联合查询的结果集筛选,而只对它所写在的那条子查询里进行筛选,这就像是子查询里的WHERE语句一样,类似这样的筛选作用范围都是在子查询,不像ORDER BY 作用在整个联合查询。
那么如何对联合查询进行 截取置顶N条数据的筛选呢? 很简单
用 rowcount
比起TOP来说,rowcount作为结果集截取置顶更加规范些,毕竟不是依靠查询语句,而是直接设置查询语句获得结果集的数目。
set rowcount 2
select * from [IND] where INDID=4
union
select * from [IND] where INDID=1
union
select * from [IND] where INDID=2
union
select * from [IND] where INDID=3
order by INDID ASC
形如以上查询语句。我们就可以做到对联合查询排序,并获得最上的两条数据了。
既然能利用order by 排序 和 并用rowcount截取集和数量,那么自然联合查询分页等其他应用也不在话下了

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

This article explores optimizing MySQL memory usage in Docker. It discusses monitoring techniques (Docker stats, Performance Schema, external tools) and configuration strategies. These include Docker memory limits, swapping, and cgroups, alongside

This article addresses MySQL's "unable to open shared library" error. The issue stems from MySQL's inability to locate necessary shared libraries (.so/.dll files). Solutions involve verifying library installation via the system's package m

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

This article compares installing MySQL on Linux directly versus using Podman containers, with/without phpMyAdmin. It details installation steps for each method, emphasizing Podman's advantages in isolation, portability, and reproducibility, but also

This article provides a comprehensive overview of SQLite, a self-contained, serverless relational database. It details SQLite's advantages (simplicity, portability, ease of use) and disadvantages (concurrency limitations, scalability challenges). C

This guide demonstrates installing and managing multiple MySQL versions on macOS using Homebrew. It emphasizes using Homebrew to isolate installations, preventing conflicts. The article details installation, starting/stopping services, and best pra

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]
