天天看點

SQL 基礎之order by 排序和代替變量(六)

使用 ORDER BY 子句排序:

– ASC:升序,預設

– DESC:降序

ORDER BY 子句在SELECT 語句結尾,可使用列别名:

1、查找工資在7000-10000之間的數字并去重,升序排序

select distinct salary  from employees where salary  between 7000 and 10000 order by salary;

<a href="https://s1.51cto.com/wyfs02/M00/8E/44/wKiom1i6m1qjTzYBAABaC62CM7o622.jpg-wh_500x0-wm_3-wmp_4-s_415438235.jpg" target="_blank"></a>

2、查找名字、部門并按照入職日期進行升序

select last_name,department_id,hire_date from employees order by hire_date;

<a href="https://s2.51cto.com/wyfs02/M01/8E/44/wKiom1i6nyjxDGy5AACpAlZfDaQ312.jpg-wh_500x0-wm_3-wmp_4-s_965547573.jpg" target="_blank"></a>

select last_name,department_id,hire_date from employees order by hire_date desc;

<a href="https://s1.51cto.com/wyfs02/M02/8E/42/wKioL1i6n37zNnKoAACrvGHUuP0110.jpg-wh_500x0-wm_3-wmp_4-s_269419881.jpg" target="_blank"></a>

另外一種用法是按照第幾列來排序,下面的例子是用到第三列

select last_name,department_id,hire_date from employees order by 3;

<a href="https://s5.51cto.com/wyfs02/M00/8E/44/wKiom1i6oCTTJzVhAACI8Hd5DXk085.jpg-wh_500x0-wm_3-wmp_4-s_2250996515.jpg" target="_blank"></a>

還有一種用法是按照多列排序,并且按照不同的方式,有個規律按照第一例的政策為先,然後才是第二例。下面的例子是按照department_id 升序為主,然後在按照第二例降序

select last_name, department_id, salary from employees order by department_id, salary desc;

<a href="https://s3.51cto.com/wyfs02/M01/8E/44/wKiom1i6oReCyftZAACp4P0SXzc701.jpg-wh_500x0-wm_3-wmp_4-s_1458556000.jpg" target="_blank"></a>

3、列出有提成員工的姓名,工資和提成,按工資降序排列?

select last_name,salary,commission_pct from employees where commission_pct is not null order by 2 desc ,3 asc;

<a href="https://s4.51cto.com/wyfs02/M02/8E/42/wKioL1i6xFGBPKAvAACVMa7R_Wo330.jpg-wh_500x0-wm_3-wmp_4-s_764681742.jpg" target="_blank"></a>

4、用替代變量,給定名字,查員工 id,工資,例如輸出工資大于10000的員工資訊

select last_name,employee_id,salary from employees  where salary &gt; &amp;slary;

<a href="https://s4.51cto.com/wyfs02/M02/8E/42/wKioL1i6xXyiPACVAADGUcyeOBE445.jpg-wh_500x0-wm_3-wmp_4-s_145614717.jpg" target="_blank"></a>

5、指定manager_id 的内容,并按照指定列 last_name 排序

select employee_id,last_name,salary,department_id from employees where manager_id= &amp;mgr_num order by &amp;order_col

<a href="https://s5.51cto.com/wyfs02/M00/8E/45/wKiom1i6xoOCVssXAACuFyPNPN0690.jpg-wh_500x0-wm_3-wmp_4-s_867772374.jpg" target="_blank"></a>

替代變量

使用替代變量:

– 使用&amp;指定變量 

– 每次重複使用變量值,如果您不想提示使用者的情況下,請使用&amp;&amp;

使用替代變量,可以替代以下内容:

– WHERE 條件

– ORDER BY 子句

– 清單達式

– 表名

– 整個 SELECT 語句

– 字元和日期替代變量要加單引号如:'first_name'

1、輸出員工id

<a href="https://s1.51cto.com/wyfs02/M02/8E/42/wKioL1i6oo-yGfCQAACcY2x71jA826.jpg-wh_500x0-wm_3-wmp_4-s_188040581.jpg" target="_blank"></a>

2、輸入job_id 為指定内容的員工姓名、部門ID、年薪等資訊

select last_name, department_id, salary*12 from employees where job_id = '&amp;job_title';

<a href="https://s3.51cto.com/wyfs02/M01/8E/44/wKiom1i6rjmRPzntAACS26B5-FQ681.jpg-wh_500x0-wm_3-wmp_4-s_3130512010.jpg" target="_blank"></a>

3、指定列名進行查詢和排序

select employee_id, last_name, job_id, &amp;&amp;column_name from employees  order by &amp;column_name ;

<a href="https://s3.51cto.com/wyfs02/M02/8E/44/wKiom1i6r2TCEb3hAAEWrRFl2yQ693.jpg-wh_500x0-wm_3-wmp_4-s_3575968254.jpg" target="_blank"></a>

定義變量

1、使用 DEFINE  指令

---使用DEFINE指令建立和配置設定一個變量的值。

---使用UNDEFINE指令來删除一個變量

DEFINE employee_num = 200

SELECT employee_id, last_name, salary, department_id

FROM employees

WHERE employee_id = &amp;employee_num ;

UNDEFINE employee_num

<a href="https://s4.51cto.com/wyfs02/M01/8E/44/wKiom1i6sOfg671PAABpsSxzK5U378.jpg-wh_500x0-wm_3-wmp_4-s_573694046.jpg" target="_blank"></a>

2、使用 VERIFY  指令

使用 VERIFY 指令來顯示的替代變量之前和之後SQL開發人員

替換替換變量的值:

SET VERIFY ON

SELECT employee_id,last_name,salary

WHERE employee_id = &amp;employee_num;

<a href="https://s4.51cto.com/wyfs02/M01/8E/42/wKioL1i6snHRg-pBAABk3NxKmko970.jpg-wh_500x0-wm_3-wmp_4-s_2524977772.jpg" target="_blank"></a>

本文轉自 yuri_cto 51CTO部落格,原文連結:http://blog.51cto.com/laobaiv1/1903247,如需轉載請自行聯系原作者