MySQL:连接表的别名 - 故障排除

标签 mysql sql

我在这里有一个关于 SQL fiddle 的工作示例: http://sqlfiddle.com/#!2/e75d6/34

使用以下查询:

SELECT *
FROM (Orders JOIN 
     Salesperson ON 
     Salesperson.ID = Orders.salesperson_id) 
      JOIN 
     (SELECT salesperson_id AS sid, MAX( Amount ) AS MaxOrder
      FROM Orders
      GROUP BY salesperson_id) AS TopOrderAmountsPerSalesperson
     ON (TopOrderAmountsPerSalesperson.sid=Orders.salesperson_id AND
         TopOrderAmountsPerSalesperson.MaxOrder=Orders.Amount) 

但是当我尝试为第一个连接表分配别名时,如下所示:

SELECT *
FROM (Orders JOIN 
     Salesperson ON 
     Salesperson.ID = Orders.salesperson_id) AS SalesOrders
      JOIN 
     (SELECT salesperson_id AS sid, MAX( Amount ) AS MaxOrder
      FROM Orders
      GROUP BY salesperson_id) AS TopOrderAmountsPerSalesperson
     ON (TopOrderAmountsPerSalesperson.sid=SalesOrders.salesperson_id AND
         TopOrderAmountsPerSalesperson.MaxOrder=SalesOrders.Amount) 

我收到语法错误。有什么想法吗?

我使用这个SO作为别名连接表的资源: SQL Alias of joined tables

最佳答案

您可以为整个查询、表名或字段名指定别名,但不能在连接条件上指定别名。尝试以下示例,将 Orders 表的别名设置为 SalesOrders

SELECT *
FROM Orders AS SalesOrders JOIN 
     Salesperson ON 
     Salesperson.ID = SalesOrders.salesperson_id 
      JOIN 
     (SELECT salesperson_id AS sid, MAX( Amount ) AS MaxOrder
      FROM Orders
      GROUP BY salesperson_id) AS TopOrderAmountsPerSalesperson
     ON (TopOrderAmountsPerSalesperson.sid=SalesOrders.salesperson_id AND
         TopOrderAmountsPerSalesperson.MaxOrder=SalesOrders.Amount) 

检查SQL Fiddle

关于MySQL:连接表的别名 - 故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24464906/

相关文章:

php - Doctrine 1.2 - 如何连接 2 个数据库

php - 使用设置 ID 从 MySQLi 获取数据不起作用

JAVA,检索值时出现SQL异常

java - 同时从数据库中选择多个数据

sql - 将 SQL Server 转储到 XML?

java - JTable 功能

mysql - 如何使用 mysql 将具有 INT 数据类型的列添加到已创建的表中

php - 选择选项 MYSQL PHP Update

mysql - SQL JOIN 查询 - 链接四个表

php - 将mysql表的内容迁移到另一个表