我对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
答案 0 :(得分:4)
如果您知道不会与其他列发生冲突,则没有理由使用它。性能没有差异,但确实会更改输出列的名称。它在构造动态选择时非常有用。例如,如果您有first_name
和last_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)