我用WAMP服务器在我的windows PC上使用MySQL 5.7.13

我的问题是在执行这个查询时

SELECT *
FROM `tbl_customer_pod_uploads`
WHERE `load_id` = '78' AND
      `status` = 'Active'
GROUP BY `proof_type`

我总是得到这样的错误

SELECT列表中的表达式#1不在GROUP BY子句中,包含未聚合的列returntr_prod.tbl_customer_pod_uploads。id',它不依赖于GROUP BY子句中的列;这与sql_mode=only_full_group_by不兼容

你能告诉我最好的解决办法吗?

我需要这样的结果

+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
| id | user_id | load_id | bill_id | latitude | langitude | proof_type | document_type | file_name    | is_private | status | createdon           | updatedon           |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+
|  1 |       1 | 78      | 1       | 21.1212  | 21.5454   |          1 |             1 | id_Card.docx |          0 | Active | 2017-01-27 11:30:11 | 2017-01-27 11:30:14 |
+----+---------+---------+---------+----------+-----------+------------+---------------+--------------+------------+--------+---------------------+---------------------+

当前回答

从它的外观来看,我认为分组多列/字段不会损害你的结果。你为什么不试试这样加入这个群呢:

GROUP BY `proof_type`, `id`

这将首先按proof_type进行分组,然后再按id进行分组。我希望这不会改变结果。在某些/大多数情况下,按多列分组会给出错误的结果。

其他回答

步骤1。检查sql模式:

SELECT @@GLOBAL.sql_mode;

步骤2。在/etc/mysql/conf目录下创建一个新的配置文件。d /目录:

sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf

在编辑器中输入以下文本:

[mysqld]

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

步骤3。重新启动MySQL:

sudo service mysql restart

步骤4。确认更改:

SELECT @@GLOBAL.sql_mode;

登录到phpMyAdmin 导航到:Server: localhost:3306并执行 不选择任何数据库 点击顶部菜单中的变量 搜索“sql mode”并将相应的值编辑为:NO_ENGINE_SUBSTITUTION

这是所有。

我在我的Ec2中这样做了,它很有魅力。

For the query to be legal in SQL92, the name column must be omitted from the select list or named in the GROUP BY clause. SQL99 and later permits such nonaggregates per optional feature T301 if they are functionally dependent on GROUP BY columns: If such a relationship exists between name and custid, the query is legal. This would be the case, for example, were custid a primary key of customers. MySQL 5.7.5 and up implements detection of functional dependence. If the ONLY_FULL_GROUP_BY SQL mode is enabled (which it is by default), MySQL rejects queries for which the select list, HAVING condition, or ORDER BY list refer to nonaggregated columns that are neither named in the GROUP BY clause nor are functionally dependent on them. via MySQL :: MySQL 5.7 Reference Manual :: 12.19.3 MySQL Handling of GROUP BY

你可以用下面的命令改变sql模式来解决这个问题:

SET GLOBAL sql_mode=(SELECT (@@sql_mode,'ONLY_FULL_GROUP_BY', "));

和…记得重新连接数据库!!

在Ubuntu中

步骤1:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

第二步:转到最后一行并添加以下内容

sql_mode = ""

第三步:保存

步骤4:重启mysql服务器。

如果你正在使用PhpMyAdmin,搜索“SQL模式”,然后去掉值:ONLY_FULL_GROUP_BY, just did and it ok。