gpt4 book ai didi

MYSQL,显示 DML 语句并按出现次数进行排序

转载 作者:行者123 更新时间:2023-11-29 15:28:44 25 4
gpt4 key购买 nike

这是我第一次发布问题,对于任何格式问题深表歉意。

我这里有一段代码: Code

但我不断收到错误:“在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #1 包含非聚合列 'mysql.gener_log.argument';这与 sql_mode=only_full_group_by 不兼容”

我想显示 General_log 文件中的 DML 语句(SELECT、UPDATE、INSERT、DELETE),同时按降序排列。

非常感谢您的反馈

最佳答案

您不需要分组,只需获取子查询中每个的计数并在主查询中按其排序即可:

SELECT DDL_STATEMENT, No_of_DDLs 
FROM
(SELECT 'INSERT' as DDL_STATEMENT, COUNT(*) as No_of_DDLs from mysql.general_log
where argument LIKE ('%INSERT%')
UNION
SELECT 'UPDATE' as DDL_STATEMENT, COUNT(*) as No_of_DDLs from mysql.general_log
where argument LIKE ('%UPDATE%')
UNION
SELECT 'SELECT' as DDL_STATEMENT, COUNT(*) as No_of_DDLs from mysql.general_log
where argument LIKE ('%SELECT%')
UNION
SELECT 'DELETE' as DDL_STATEMENT, COUNT(*) as No_of_DDLs from mysql.general_log
where argument LIKE ('%DELETE%')
) t

ORDER BY No_of_DDLs DESC

查询实际上不是很准确,您应该添加更多验证,例如:

  • 使用 UPPER(参数)获取搜索词的所有组合:“SELECT”、“select”、“Select”等。
  • 排除包含您的搜索字词的字词,例如“选择”
  • 删除前导“%”以获取以搜索词开头的查询。实际上,这个查询的每次执行都会为 4 个搜索词中的每一个创建一个新的命中:-)

关于MYSQL,显示 DML 语句并按出现次数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com