是或否AS,查询

时间:2012-12-03 23:02:31

标签: php mysql

我对PHP / MySql相当新,并且通常使用查询。我只是想知道使用" AS"是否有任何好处。在一个查询,而不是试图让它看起来更干净?它会加速查询吗?我可能已经通过谷歌搜索找到了这个,但我想问我的第一个问题,看看它是如何工作的。我会选择一个答案(不像有些人......)

使用:

SELECT
news.id as id
news.name as name
FROM news

SELECT
news.id
news.name
FROM news

我找到的多对多关系教程中的一个更复杂的例子:

SELECT
c.name,
cf.title
FROM celebrities AS c
JOIN (
    SELECT
    icf.c_id,
    icf.f_id,
    f.title
    FROM int_cf AS icf
    JOIN films AS f
    ON icf.f_id = f.f_id
) AS cf
ON c.c_id = cf.c_id
ORDER BY c.c_id ASC

4 个答案:

答案 0 :(得分:4)

如果您知道不会与其他列发生冲突,则没有理由使用它。性能没有差异,但确实会更改输出列的名称。它在构造动态选择时非常有用。例如,如果您有first_namelast_name字段,则可以使用CONCAT函数执行以下操作:

SELECT CONCAT(first_name, ' ', last_name) AS name FROM whatever

此外,AS运算符在定义子查询表时起作用,如您在JOIN中所示。如果没有该AS,您将无法在ON子句或SELECT字段中引用该表。

答案 1 :(得分:3)

1)不,它不影响单向性能

2)就SQL查询的可读性而言,这只是一个偏好问题

3)它确实会影响输出的可读性(它会改变列标题)

答案 2 :(得分:2)

仅限于模棱两可的问题。保留字。它不会影响性能。歧义是指两个具有相同名称的列来自不同的表。其他RDBMS会为此拍打你。保留字是指必须使用反引号或别名进行转义的系统字。

使用子查询时,可能无法在子级别之外派生别名列。

答案 3 :(得分:1)

使用别名(“AS”关键字)时执行查询的速度以及不使用它们时的查询速度是相同的。使用它们的原因:

  • 如果您有非常长或复杂的表名或列名,则可以更轻松地使用数据库:
SELECT c.Construction_ID, c.Name, c.Price 
FROM Constructions c LEFT JOIN 
Constructions_Orders co ON c.Construction_ID = co.Construction_ID
WHERE c.OrderID='1' AND c.Name='ConstructionName'

但是,它会更改输出列名称,也会考虑它(使正在阅读代码的人更难)。

  • 别名对于创建动态选择非常有用:
mysql> SELECT CONCAT(id, name, work_date) as profile
    -> FROM employee_tbl;
+-----------------------------+
| profile                     |
+-----------------------------+
| 1John2007-01-24             |
| 2Ram2007-05-27              |
| 3Jack2007-05-06             |
| 3Jack2007-04-06             |
| 4Jill2007-04-06             |
| 5Zara2007-06-06             |
| 5Zara2007-02-06             |
+-----------------------------+
7 rows in set (0.00 sec)