Monday 14 March 2016

Union order by

select .... union select ... order by后面可以跟什么

只可以跟两样东西

1. 数字N,1<=N<=列数
2. union左边的select clause里的字段,如果有别名,必须用别名,不可以再用原来的字段名。不可以用字符串。

一个例子说明第二点

select employee_id id, first_name, 'c', 'c' ca from employees
union
select employee_id, first_name f_name, 'c', 'c' from employees
order by ?

order by 3 可以
order by employee_id 不可以,因为这个字段有了别名,本来的字段名就不能用了
order by id 可以
order by first_name 可以
order by f_name 不可以,union右边select clause的字段根本不用看
order by 'c' 不可以,因为是字符串
order by ca 可以,因为是别名,不是字符串了
order by lower(first_name) 不可以,表达式一律不允许

No comments:

Post a Comment