Php MySQL:在Join语句和Join语句顺序中使用列别名?
只是一个小的MySQL语句示例:Php MySQL:在Join语句和Join语句顺序中使用列别名?,php,mysql,join,Php,Mysql,Join,只是一个小的MySQL语句示例: SELECT m.nameMarket nm, m.idCity idc, c.cityname cn FROM markets m LEFT JOIN cities c ON m.idCity = c.idCity 一切正常。为什么两者都不起作用(在Join语句的Select子句中使用别名): 或者我不能在Join语句中使用列别名吗?(我很困惑,因为我还可以像第一个SQL代码那样在语句中使用表别名) 第二个问题是:左连接中语句的顺序是否相
SELECT m.nameMarket nm, m.idCity idc, c.cityname cn
FROM markets m
LEFT JOIN cities c ON m.idCity = c.idCity
一切正常。为什么两者都不起作用(在Join语句的Select子句中使用别名):
或者我不能在Join语句中使用列别名吗?(我很困惑,因为我还可以像第一个SQL代码那样在语句中使用表别名)
第二个问题是:左连接中语句的顺序是否相关?即:
SELECT m.nameMarket nm, m.idCity idc, c.cityname cn
FROM markets m
LEFT JOIN cities c ON m.idCity = c.idCity
SELECT m.nameMarket nm, m.idCity idc, c.cityname cn
FROM markets m
LEFT JOIN cities c ON c.idCity = m.idCity
我的意思是结果是一样的,但是否存在速度/性能问题或其他相关问题?
谢谢当你选择某样东西并给它取别名时,请仔细想想。在您选择它之前,它不存在(例如,如果它是某个事物的子集,该怎么办)。那么,在一个还不存在的别名上进行连接有意义吗?它基本上是运行时应用于整个语句的最后一件事 一个表已经存在,所以用别名引用它是有意义的。但是,通常在查询过程中,必须进行单独的引用才能再次引用该表。如果最终在同一个表上执行多个联接,这可以防止歧义 顺序重要吗?那么,查询优化器将尝试各种排列并选择最佳排列。所以不,不应该 为什么两者在这里都不起作用(在Join语句的Select子句中使用别名) 正如您所发现的,
SELECT
子句中的列别名在其他子句中不起作用。在一些RDBMS中,它们在ORDER BY
子句中工作,在WHERE
子句中工作的频率较低,但大多数情况下它们不工作。原因很简单,因为数据库引擎直到查询执行的很晚才查看或分配SELECT
子句中的别名。唯一的例外是在子查询中
左联接中语句的顺序是否相关
我的意思是结果是一样的,但是否存在速度/性能问题或其他相关问题
我希望数据库引擎能够完全相同地解析查询。我甚至可以说,如果数据库引擎不存在错误,它就存在错误
启动MySQL查询分析器,使用EXPLAIN
命令查看执行计划。它们应该是相同的
SELECT m.nameMarket nm, m.idCity idc, c.cityname cn
FROM markets m
LEFT JOIN cities c ON m.idCity = c.idCity
SELECT m.nameMarket nm, m.idCity idc, c.cityname cn
FROM markets m
LEFT JOIN cities c ON c.idCity = m.idCity