我了解 ANSI SQL 需要使用聚合函数选择非 GROUP BY 属性。
例如,下面在 ANSI SQL 中是无效的:
SELECT name, MAX(salary), dept
FROM `employee_gb`
GROUP BY dept;
asname
没有传递给任何聚合函数。
但是,MySQL 允许这样做。如果我们想让 MySQL 表现得像 ANSI SQL,我们需要按照这里的说明设置 sql 模式。但是当我尝试这样做时,它仍然没有给我任何错误:
SET GLOBAL sql_mode = 'ANSI';
我想上面的查询应该给我错误。我在这里缺少什么?
以下是填充数据的查询:
CREATE TABLE `employee_gb`
(name varchar(50), salary float, dept varchar(50));
INSERT INTO `employee_gb` VALUES('a',1,'dept3');
INSERT INTO `employee_gb` VALUES('b',2,'dept4');
INSERT INTO `employee_gb` VALUES('c',3,'dept1');
INSERT INTO `employee_gb` VALUES('d',4,'dept2');
INSERT INTO `employee_gb` VALUES('e',5,'dept2');
INSERT INTO `employee_gb` VALUES('g',5,'dept2');
INSERT INTO `employee_gb` VALUES('f',6,'dept1');
这些是从 CLI 执行的一些屏幕截图: