testbook

表和列的化名(ALIAS)

表和列的化名在一下几种情况会用到:

  • 表名和列名有时会很长,查询时反复使用这些名字会很麻烦。
  • 当一张表在查询中重复使用并且扮演不同角色时,Inceptor也需要帮助辨别这些角色。
  • 查询需要利用子查询的结果。
  • 这些时候,用户可以给表或列起临时的化名,这并不是给表或者列重命名,化名只能在当前查询中使用。
    表化名(Table Alias)
    语法

    SELECT select_expression, select_expression, ...
    FROM table_reference [AS] table_alias
    
    说明
  • table_reference 可以是表,视图或者子查询。
  • 可以选择使用AS连接table_reference和table_alias,来清楚地标注出使用了化名

  • 举例
    employee_info表在查询中重复使用并且扮演不同角色:
    [$host] transwarp> SELECT e1.employee_name, e2.employee_name FROM employee_info e1 JOIN employee_info AS e2 ON 1 = 1 WHERE e1.employee_name > e2.employee_name;
    张鑫叶  吴思翼
    王明哲  张鑫叶
    王明哲  戴李仁
    王明哲  吴思翼
    许玮伦  张鑫叶
    许玮伦  王明哲
    许玮伦  戴李仁
    许玮伦  吴思翼
    戴李仁  张鑫叶
    戴李仁  吴思翼
    郑希    张鑫叶
    郑希    王明哲
    郑希    许玮伦
    郑希    戴李仁
    郑希    吴思翼
    
    举例
    给子查询起化名:
    [$host] transwarp> SELECT temp.name FROM (SELECT name, acc_level FROM user_info) temp;
    马从筠
    祝韩恒
    华微
    魏向卉
    宁新瑶
    邱坤
    李平
    潘营泽
    李韩瑶
    管淑艳
    
    列化名(Column Alias)
    语法
    SELECT select_expression [AS] col_alias, select_expression [AS] col_alias, ...
    FROM table_reference
    
    说明
  • select_expression可以是列名,或者子查询。
  • 可以选择使用AS连接select_expression和col_alias,来清楚地标注出使用了化名
  • 例子:给列起化名
    [$host] transwarp> SELECT n FROM (SELECT name as n FROM user_info);
    马从筠
    祝韩恒
    华微
    魏向卉
    宁新瑶
    邱坤
    李平
    潘营泽
    李韩瑶
    管淑艳
    
    例子:给子查询起列化名:
    [$host] transwarp> SELECT acc_num, (avg(price*amount) - (SELECT avg(price*amount) FROM transactions)) AS diff FROM transactions GROUP BY acc_num;
    6600641 -4062.6499999999996
    6513065 -20.316666666666606
    5224133 1577.3500000000004
    6670192 971.3500000000004
    3912384 -685.6499999999996
    0700735 -1364.6499999999996
    2394923 1126.3500000000004
    2755506 4797.35