我想知道,如果可以使用“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;
有人有其他建议怎么办?
答案 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;
对齐只是为了提高可读性。您可以选择将整个陈述放在一行中,这使得难以阅读。