MySQL 删除行 ORDER BY COUNT DESC

标签 mysql group-by mysql-error-1055

我有一个表,其中包含测试库每两个问题的相似度。 enter image description here

这意味着 Question_id 6 与 Question_id 10 相似度为 84%。 Question_id 6 的类似问题共有 12 个。

我只是最相关的问题,或者前 7 个相关问题。

我见过Mysql delete order by 并尝试过:

DELETE FROM     exam_relatedquestion
WHERE
    `exam_relatedquestion`.id IN (
        SELECT
            `exam_relatedquestion`.id
        FROM
            (
                SELECT  `exam_relatedquestion`.id
                FROM    `exam_relatedquestion`
                GROUP BY
                    `exam_relatedquestion`.from_question_id_id
                ORDER BY
                    `exam_relatedquestion`.similarity DESC
                LIMIT 7
            ) a
    )

但是错误信息是:

[Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'den.exam_relatedquestion.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

如何删除与问题不相关的前 7 行?

最佳答案

那是行不通的。无论如何,您的伪代码都不正确,因为排序方向错误。

无论如何,您都可以使用变量来枚举问题,然后使用join:

delete erq
    from exam_relatedquestion erq join
         (select erq2.*,
                 (@rn := if(@q = erq2.from_question_id_id, @rn + 1,
                            if(@q := erq2.from_question_id_id, 1, 1)
                           )
                 ) as seqnum
          from exam_relatedquestion erq2 cross join
               (select @rn := 0, @q := -1) params
          order by erq2.from_question_id_id, score desc
         ) erq2
         on erq2.id = erq.id
    where rn > 7;

关于MySQL 删除行 ORDER BY COUNT DESC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014179/

相关文章:

php - Ajax 代码无法正常工作,即使它(我认为)是正确的

mysql - #1064 - 您的 SQL 语法有误。要在 '– 附近使用正确的语法

c# - 按 id 对 List<T> 中的对象进行分组,并按每个对象的 duplicateCount 对列表进行排序

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

mysql - 来自 3 个不同表的 SQL 查询

SQL 分组依据

sql - 如何在 DBIx::Class 结果集搜索中检索每个组中的最新记录?

php - SELECT 列表不在 GROUP BY 子句中 ERROR MySQL

mysql - MySQL 5.0升级到5.7后出错

php - 从表php mysql中删除行