我发现了一个SQL语句:
SELECT * FROM Users x
我的问题是:x
是什么?我以前从未见过这个。
感谢。
答案 0 :(得分:5)
x
是表Users
的别名。
通过给出一个可以改善SELECT语句的可读性 表别名,也称为相关名称或范围变量。一个 可以使用或不使用AS关键字分配表别名:
SELECT * FROM Users x
SELECT * FROM Users AS x
答案 1 :(得分:3)
这是别名。 AS
关键字是可选的,但已被省略,但它与:
SELECT * FROM Users AS x
这意味着您可以(在SQL的某些实现中,SQL Server是其中之一,必须)在查询的其余部分中使用x
来引用表{{ 1}}在这里指定。例如:
Users
别名有三个常见用例:
可读性。对于长表名称或名称将多次使用,它可以提高可读性。例如,假设以下没有别名:
SELECT x.MyColumn
FROM Users x
WHERE x.AnotherColumn = 42
消歧。通常用于自连接,请注意使用相同的表两次。您必须使用别名来区分SELECT x.SomeColumn, x.SomeOtherColumn, x.AThirdColumn
FROM [my crAzy Table Name with spaces in it] x
WHERE x.AnotherColumn = 42
表的两个实例:
Users
FROM或JOIN子句中的子查询(也称为派生表)必须具有名称。这是通过指定别名来完成的:
SELECT x.SomeColumn, COUNT(y.SomeColumn)
FROM Users x
INNER JOIN Users y ON x.SomeOtherColumn < y.SomeOtherColumn
GROUP BY x.SomeColumn
答案 2 :(得分:1)
它只是用户的别名,可以在查询中使用。
想象一下:
您想要从2个表中检索数据,并且
中都包含Id列如果你想要检索这些ID,你必须在列名前加上前缀以避免混淆。
使用别名:
select t1.Id, t2.Id
from mytableWithAReallyComplicatedName t1
inner join mySecondtableWithAReallyComplicatedName t2 on t1.Id = t2.Id
没有别名
select mytableWithAReallyComplicatedName.Id, mySecondtableWithAReallyComplicatedName.Id
from mytableWithAReallyComplicatedName
inner join mySecondtableWithAReallyComplicatedName on mytableWithAReallyComplicatedName.Id = mySecondtableWithAReallyComplicatedName .Id
表名很长,使用第二个版本,查询可能很难实际阅读。