如何使用MySQL的别名在查询中使用假名?

时间:2017-12-01 21:43:27

标签: mysql sql subquery

我想知道,如果可以使用“AS”编写查询,而无需使用 MySQL 对查询进行对齐。

  

示例一(在主查询中具有对齐和子查询)

SELECT ID FROM (
    SELECT ID, msisdn FROM (
        SELECT * FROM TT2
    ) AS T
) AS T
  

例二(没有主查询的对齐和子查询)

SELECT name,LEFT(occupation,1) AS letter FROM OCCUPATIONS ORDER BY name AS tab1;

SELECT letter FROM tab1 ORDER BY letra ASC;

这个示例二不能正常工作,可以用其他方式吗?

  

示例一和二之间的主要区别在于,在第一种情况下,主要查询在其自身内部进行子查询,在第二种情况下,子查询它们不在主查询中。

根据this answer的说法,可能是这个问题的一个选项:

With tab1 as (
SELECT name,LEFT(occupation,1) AS letra FROM OCCUPATIONS ORDER BY name
)

SELECT letra FROM tab1 ORDER BY letra ASC;

有人有其他建议怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用Create Table As(又名CTA):

CREATE TEMPORARY TABLE tab1 AS
SELECT name,LEFT(occupation,1) AS letter 
FROM OCCUPATIONS;

SELECT letter FROM tab1 ORDER BY letter ASC;

<强> DBFiddle Demo

答案 1 :(得分:1)

试试这个......

SELECT letter FROM (SELECT name, LEFT(occupation,1) AS letter FROM OCCUPATIONS) tab1 ORDER BY letter ASC;

对齐只是为了提高可读性。您可以选择将整个陈述放在一行中,这使得难以阅读。