相关疑难解决方法(0)

在MySql中执行查询时与only_full_group_by相关的错误

我已经升级了我的系统,并为我正在处理的Web应用程序安装了MySql 5.7.9和php.我有一个动态创建的查询,当在旧版本的MySql中运行时,它可以正常工作.自升级到5.7后,我收到此错误:

SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列'support_desk.mod_users_groups.group_id',它在功能上不依赖于GROUP BY子句中的列; 这与sql_mode = only_full_group_by不兼容

请注意有关服务器SQL模式主题的Mysql 5.7的手册页.

这是给我带来麻烦的查询:

SELECT mod_users_groups.group_id AS 'value', 
       group_name AS 'text' 
FROM mod_users_groups
LEFT JOIN mod_users_data ON mod_users_groups.group_id = mod_users_data.group_id 
WHERE  mod_users_groups.active = 1 
  AND mod_users_groups.department_id = 1 
  AND mod_users_groups.manage_work_orders = 1 
  AND group_name != 'root' 
  AND group_name != 'superuser' 
GROUP BY group_name 
HAVING COUNT(`user_id`) > 0 
ORDER BY group_name
Run Code Online (Sandbox Code Playgroud)

我在这个问题上做了一些谷歌搜索,但我不明白only_full_group_by弄清楚我需要做些什么来修复查询.我可以关掉这个only_full_group_by选项,还是我需要做些什么呢?

如果您需要更多信息,请与我们联系.

mysql sql group-by mysql-error-1055

394
推荐指数
13
解决办法
50万
查看次数

删除MySQL中的重复行

我有一个包含以下字段的表:

id (Unique)
url (Unique)
title
company
site_id
Run Code Online (Sandbox Code Playgroud)

现在,我需要删除具有相同的行title, company and site_id.一种方法是使用以下SQL和脚本(PHP):

SELECT title, site_id, location, id, count( * ) 
FROM jobs
GROUP BY site_id, company, title, location
HAVING count( * ) >1
Run Code Online (Sandbox Code Playgroud)

运行此查询后,我可以使用服务器端脚本删除重复项.

但是,我想知道是否只能使用SQL查询来完成.

mysql sql duplicates

351
推荐指数
15
解决办法
35万
查看次数

获取每组分组SQL结果的最大值记录

如何获得包含每个分组集的最大值的行?

我在这个问题上看到了一些过于复杂的变化,没有一个有很好的答案.我试图把最简单的例子放在一起:

给出如下表格,包含人,组和年龄列,您将如何获得每组中最老的人?(组内的一个平局应该给出第一个字母结果)

Person | Group | Age
---
Bob  | 1     | 32  
Jill | 1     | 34  
Shawn| 1     | 42  
Jake | 2     | 29  
Paul | 2     | 36  
Laura| 2     | 39  
Run Code Online (Sandbox Code Playgroud)

期望的结果集:

Shawn | 1     | 42    
Laura | 2     | 39  
Run Code Online (Sandbox Code Playgroud)

mysql sql greatest-n-per-group

212
推荐指数
6
解决办法
21万
查看次数

MySQL选择一列DISTINCT,以及相应的其他列

ID   FirstName   LastName
1      John        Doe
2      Bugs        Bunny
3      John        Johnson
Run Code Online (Sandbox Code Playgroud)

我想DISTINCTFirstName列中选择结果,但我需要相应的IDLastName.

结果集只需显示一个John,但需要ID1和1 LastName的Doe.

mysql

182
推荐指数
5
解决办法
28万
查看次数

确定正在使用的配置文件

是否有命令确定MySQL 5.0当前使用的配置文件?

mysql configuration

136
推荐指数
8
解决办法
18万
查看次数

MySQL在每个唯一值的第一次出现时选择行

假设您有下表(这里感兴趣的列是cid):

+-----+-------+-------+-------+---------------------+--------------+
| cid | pid   | rid   | clink | time                | snippet      |
+-----+-------+-------+-------+---------------------+--------------+
| 155 | 11222 |  1499 |  1137 | 2012-08-22 03:05:06 | hi           |
| 138 | 11222 |   241 |  1136 | 2012-08-21 05:25:00 | again        |
| 138 | 11222 |   241 |  1135 | 2012-08-21 05:16:40 | hi           |
| 155 | 11222 |  1499 |  1134 | 2012-08-21 05:11:00 | hi cute      |
| 140 | 11222 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql

36
推荐指数
3
解决办法
5万
查看次数

MySQL:不在GROUP BY中

该站点生成结果,但SELECT COUNT和SELECT查询与GROUP BY有两个不同的结果计数.这可能是由于phpmyadmin中显示的错误而不是网站上显示的错误.

查询:

SELECT count(DISTINCT `name`) as `numrows` FROM `users` WHERE `verified` = '1'

SELECT `name`, `type`, `language`, `code` FROM `users` WHERE `verified` = '1' GROUP BY `name` ORDER BY `count` DESC LIMIT 0, 25
Run Code Online (Sandbox Code Playgroud)

PhpMyAdmin提供以下错误:

1055 - 'main.users.type'不在GROUP BY中

在阅读MySQL文档时,我仍然不清楚我必须解决的问题.我似乎无法掌握这一点.

mysql sql phpmyadmin mysql-error-1055

19
推荐指数
2
解决办法
5万
查看次数

Postgres DISTINCT与DISTINCT ON

我有一个使用以下语句创建的Postgres表.此表由另一个服务的数据转储填充.

CREATE TABLE data_table (
    date date DEFAULT NULL,
    dimension1 varchar(64) DEFAULT NULL,
    dimension2 varchar(128) DEFAULT NULL
) TABLESPACE pg_default;
Run Code Online (Sandbox Code Playgroud)

我正在构建的ETL中的一个步骤是提取它们的唯一值dimension1并将它们插入另一个中间表中.但是,在某些测试中,我发现下面的2个命令不会返回相同的结果.我希望两者都返回相同的金额.与第二个命令相比,第一个命令返回的结果更多(1466行与1504行相比).

-- command 1
SELECT DISTINCT count(dimension1)
FROM data_table;

-- command 2    
SELECT count(*)
FROM (SELECT DISTINCT ON (dimension1) dimension1
FROM data_table
GROUP BY dimension1) AS tmp_table;
Run Code Online (Sandbox Code Playgroud)

有什么明显的解释吗?作为解释的替代方案,是否有任何建议检查我应该做的数据?

编辑:以下查询都返回1504(与"简单"相同DISTINCT)

SELECT count(*)
FROM data_table WHERE dimension1 IS NOT NULL;

SELECT count(dimension1)
FROM data_table;
Run Code Online (Sandbox Code Playgroud)

谢谢!

sql postgresql

14
推荐指数
1
解决办法
6021
查看次数

Doctrine Querybuilder ORDER BY子句不在SELECT列表中

我有以下查询构建器:

$queryBuilder = $this
    ->createQueryBuilder('recipient')
    ->leftJoin('recipient.message', 'message')
    ->orderBy('message.dateSent', 'DESC');
Run Code Online (Sandbox Code Playgroud)

这一直很好:)但是因为升级到Mysql 5.7我已经开始在任何地方得到这个错误:

SQLSTATE [HY000]:
一般错误:3065 子句的
表达式#1 ORDER BY不在SELECT列表中,引用列'dctrn_result.date_sent_5'不在SELECT列表中;
这是不相容的DISTINCT

我已经在大多数使用DBAL图层的地方解决了这个问题,只需将项目添加到选择列表中,但我无法弄清楚如何使用此特定功能queryBuilder.

mysql symfony doctrine-orm

11
推荐指数
2
解决办法
1万
查看次数

如何使用JPA Criteria API / Hibernate按Case语句分组

我正在尝试执行以下查询,并通过一个case语句进行选择,并通过同一case语句进行分组。

Select USER, 
  (CASE
    WHEN value between 0 AND 2 then '0-2'
    WHEN value between 3 AND 4 then '3-4'
    ELSE '5+'
  END) as CASE_STATEMENT ,
SUM(value)
.....
Group by user, CASE_STATEMENT
Run Code Online (Sandbox Code Playgroud)

与Hibernate一起使用JPA 2.0 Criteria API。

我的测试用例看起来像...

    CriteriaBuilder cb = em.getCriteriaBuilder()
    CriteriaQuery cq = cb.createQuery(Tuple)
    def root = cq.from(TestEntity)
    def userGet = root.get('user')
    def valueGet = root.get('value')
    def caseExpr =
            cb.selectCase()
                .when(cb.between(valueGet, 0, 2), '0-2')
                .when(cb.between(valueGet, 3, 4), '3-4')
                .otherwise('5+')
    def sumExpr = cb.sum(valueGet)

    cq.multiselect([userGet, caseExpr, sumExpr])
    cq.groupBy([userGet, caseExpr])
    log(typedQuery.unwrap(Query).queryString) …
Run Code Online (Sandbox Code Playgroud)

java groovy hibernate jpa criteria-api

9
推荐指数
1
解决办法
622
查看次数