首页
关于
Search
1
在投射和录制时显示敏感信息写给TeamViewer,anydesk,向日葵
8,614 阅读
2
sublime 3155-3175 LICENSE
7,910 阅读
3
mysql存储过程&时间累加插入
7,754 阅读
4
永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
4,486 阅读
5
mysql-workbench中duration fetch的含义
4,460 阅读
ubuntu
linux
sublime
php
mysql
JS
CSS
其他
chrome
redis
登录
Search
标签搜索
mysql
curl
grep
journalctl
rename
You can't specify target table
only_full_group_by
Sub-process
警示
dropbox
mtr
curl抓取重定向
floor
intval
ceil
round
pixmap
adwaita
date.utc
gmmktime
五好的Book
累计撰写
194
篇文章
累计收到
31
条评论
首页
栏目
ubuntu
linux
sublime
php
mysql
JS
CSS
其他
chrome
redis
页面
关于
搜索到
48
篇与
的结果
2018-12-17
mysql8 only_full_group_by 的解决办法
Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'table.key' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 以上是报错信息,根据这个报错信息 在网海里捞了一捞,发现大部分的结果都是类似这样的set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';然而设置了却没有起作用.正确的设置方法 如下:set @@session.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 当然sql_mode 的值 最好根据select @@global.sql_mode 得到的结果 做修改.把得到的值 中的ONLY_FULL_GROUP_BY去掉 还有另外一个解决办法 就是通过 any_value()这个内置函数SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name; 在这种情况下,MySQL 会忽略address每个name组中值 的不确定性 并接受查询。如果您根本不关心为每个组选择非聚合列的哪个值,这可能很有用。 ANY_VALUE()不是聚合函数,与SUM()或 等函数不同 COUNT()。它只是起到抑制非确定性测试的作用。文档中给出了抛出这个错误的3种解决办法分别是:1.更改表以创建name主键或唯一NOT NULL列2.使用any_value3.禁用 ONLY_FULL_GROUP_BY参考:https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_any-value
2018年12月17日
2,921 阅读
0 评论
0 点赞
2018-12-08
当group by 遇上order by 后总感觉语句是对的,然而结果却...
有文章表txt字段如下:bid, aid, title, ctime ...表数据如下:bid aid title ctime 1 1 第一章 123 1 2 第二章 124 3 3 第一章 121 4 4 第二章 125 4 5 第一章 122 ...现在要求 按照bid(书ID)不能重复,而且按照 ctime(创建时间)降序做一个列表那么很自然的,可能会写出这样的SQL语句select * from txt group by bid order by ctime; 嗯,目光再扫射一遍,不错,就这样,应该,肯定,绝对可以满足需求了^_^ 然而实际执行之后却突然发现分组后排序不对.为什么?本着实事求是的态度,可能是这样的情况group by 后 他返回 ctime 可能是随机某个记录的值,然后再order by 显然是不对了的(只是推测...暂时没有去求证.)现在把解决方法写下来仅供参考:select * from (select *,max(ctime)ctimes from txt group by bid) a order by ctimes desc; 执行.嗯,没错了.
2018年12月08日
953 阅读
0 评论
0 点赞
2018-11-16
清理binlog日志记录
mysql 长期运行下会产生很多日志记录,尤其是binlogroot@www:/var/lib/mysql# du -h * 4.0K auto.cnf 1.1G binlog.000016 1.1G binlog.000017 1.1G binlog.000018 1.1G binlog.000019 1.1G binlog.000020 1.1G binlog.000021 1.1G binlog.000022 1.1G binlog.000023 1.1G binlog.000024 1.1G binlog.000025 1.1G binlog.000026 1.1G binlog.000027 754M binlog.000028 4.0K binlog.000029 416M binlog.000030 4.0K binlog.index 以下方法来控制binlog的大小1.限制 binlog 日志文件存在时间 设置参数 expire_logs_days = 3; 只保留 3 天的日志文件 2.在mysql的shell里执行 reset master; 清空所有 binlog 文件 3.对于没有做主从的情况,直接在配置文件中注释log-bin=mysql-bin这个配置项 4.有主从配置的情况可以这样来操作 show slave status\G # 你首先要来 slave 上查看从库读 binlog 到了哪里 Master_Log_File: mysql-bin.000007 # 我们可以看到是 mysql-bin.000007 mysql> purge master logs to 'mysql-bin.000007'; # 我们可以在 master 中执行这条指令 , 将 binlog 文件删除至 mysql-bin.000007 前 mysql> purge master logs before '2018-11-16 00:00:00'; # 将 binlog 文件删除至此日期前
2018年11月16日
922 阅读
0 评论
0 点赞
2018-10-30
\n和char(10)换行符号
\n是什么 他是一个 换行的转意字符串 char(10) char是一个函数 10是传递给函数的参数值 其实char 返回的是 (其他类型计算机文件中的代码转换为字符)将ASCII码转换成为字符串那么其实 char(10)也就是\n 比如在sql 中这2个用法查询到的结果是一样的SELECT replace(txt,'\n','<br>') FROM bktxt where id=2; SELECT replace(txt,char(10),'<br>') FROM bktxt where id=2; 都是将 txt字段里的 换行符替换成 标签
2018年10月30日
754 阅读
0 评论
0 点赞
2018-10-30
group_concat将一列多行串联成一行
应用场景:select id,title from book where id>1;#如果有多条数据执行后 会是返回多条(行)数据的 id title1 小学语文2 小学数学3 小学自然4 中学语文如果我只需要返回一行,其中包含了所有的id...这里可以用一下group_concat 这个函数了用法GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) 返回一个连接的字符串组中值之间的默认分隔符是逗号(,)如果需要返回的结果是 2,3,4则可以运用下面的查询语句来查询select group_concat(id) ids from book where id>1;#结果将会把id用逗号串联成一行2,3,4 select group_concat(id separator '-') ids from book where id>1;#结果 2-3-4 实例1:将不同分值段的数据分批找出来:case: SELECT objid FROM SCOTT.SCORES WHERE subject = 1 AND score IN (90,91,92,93,94,95) 我们的策略:把满足条件的做标记,然后再通过对应的标记做分组参考语句:select fz,group_concat(objid) from ( select objid,if(score>=90,1,if(score>=60,2,if(score<60,3,0)))fz from SCOTT.SCORES )tmp group by fz 详情参考https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat
2018年10月30日
852 阅读
0 评论
0 点赞
1
...
4
5
6
...
10