Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL按计数说明删除行顺序_Mysql_Group By_Mysql Error 1055 - Fatal编程技术网

MySQL按计数说明删除行顺序

MySQL按计数说明删除行顺序,mysql,group-by,mysql-error-1055,Mysql,Group By,Mysql Error 1055,我有一个表格,其中包含一个测试库中每两个问题的相似性。 这意味着问题6与问题10的相似性为84%。 还有12个类似的问题_id6 我只知道最相关的问题是什么,或者前7个相关问题 我见过 并尝试: DELETE FROM exam_relatedquestion WHERE `exam_relatedquestion`.id IN ( SELECT `exam_relatedquestion`.id FROM

我有一个表格,其中包含一个测试库中每两个问题的相似性。

这意味着问题6与问题10的相似性为84%。 还有12个类似的问题_id6

我只知道最相关的问题是什么,或者前7个相关问题

我见过 并尝试:

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-选择列表的表达式1不在GROUP BY子句中 并包含未聚合的列“den.exam\u relatedquestion.id”,其中 在功能上不依赖于GROUPBY子句中的列;这是 与sql\u模式不兼容=仅\u完整\u组\u由


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

不起作用。您的伪代码无论如何都不正确,因为排序方向错误

在任何情况下,您都可以使用变量枚举问题,然后使用联接:


首先为什么要使用GROUP BY?@TimBiegeleisen我想在GROUP BY中查看来自_question _id _id的问题,然后保留其中最相关的问题。但是我不知道正确的方法是什么。谢谢你的回答。但我不知道erq在我的情况下意味着什么。我得到了[Err]1051-未知表'eqr2'。
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;