【发布时间】:2019-08-16 06:38:09
【问题描述】:
我已经通过了:Error Code: 1248. Every derived table must have its own alias No solution found for query,但仍然不确定它期望的正确列名是什么?
案例一:
SELECT max(avg_sal), min(avg_sal)
FROM (SELECT dept , avg(salary) as avg_sal from Employee e GROUP BY dept HAVING dept in ('Admin','IT'));
12:04:44 SELECT max(avg_sal), min(avg_sal) FROM (SELECT dept , avg(salary) as avg_sal from Employee e GROUP BY Dept HAVING dept in ('Admin','IT')) LIMIT 0 , 1000 错误代码: 1248. 每个派生表都必须有自己的别名 0.000 秒
案例:2
SELECT max(avg_sal), min(avg_sal)
FROM (SELECT dept , avg(salary) as avg_sal from Employee e GROUP BY dept HAVING dept in ('Admin','IT')) as dept;
然后我得到
选择最大值(avg_sal),最小值(avg_sal) FROM (SELECT dept , avg(salary) as avg_sal from Employee e GROUP BY dept HAVING dept in ('Admin','IT')) as dept;
部门
@Entity
public class Dept {
@Id
@GeneratedValue
private Integer id;
private String name;
}
员工
@Entity
@NamedQuery(name = "Employee.findMaxSalariesByDept",
query = "SELECT e.dept, MAX(e.salary) FROM Employee e GROUP BY e.dept.name HAVING e.dept.name in ?1")
public class Employee {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne(cascade = CascadeType.ALL)
private Dept dept;
private int salary;
}
显示表格:
CREATE TABLE `employee` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`salary` int(11) NOT NULL,
`dept_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKfow2bhgypdy2ij4oyukrn6cqw` (`dept_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
【问题讨论】:
-
您能否将
SHOW CREATE TABLE Employee;的输出添加到您的问题中?这个表好像缺少dept这列 -
@digijay - 添加了询问的详细信息
-
正如@scaisEdge 在下面提到的,您没有
dept列,而只有dept_id。您可以尝试在 Case-1 查询中更改它吗?
标签: mysql spring-data-jpa jpa-2.2 hibernate-6.x