Site updated: 2023-05-25 18:38:45
This commit is contained in:
parent
3e7faed94c
commit
9f8985fdef
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
2023/05/25/MySQL中的any-value-函数/index.html
Normal file
1
2023/05/25/MySQL中的any-value-函数/index.html
Normal file
File diff suppressed because one or more lines are too long
1
2023/05/25/解决MySQL报only-full-group-by错误/index.html
Normal file
1
2023/05/25/解决MySQL报only-full-group-by错误/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
archives/2023/05/index.html
Normal file
1
archives/2023/05/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
134
atom.xml
134
atom.xml
@ -8,7 +8,7 @@
|
|||||||
<author>
|
<author>
|
||||||
<name>Hito Li</name>
|
<name>Hito Li</name>
|
||||||
</author>
|
</author>
|
||||||
<updated>2023-04-16T05:32:00.000Z</updated>
|
<updated>2023-05-25T10:25:00.000Z</updated>
|
||||||
<category term="hito" />
|
<category term="hito" />
|
||||||
<category term="無言" />
|
<category term="無言" />
|
||||||
<category term="博客" />
|
<category term="博客" />
|
||||||
@ -17,6 +17,65 @@
|
|||||||
<category term="心得体会" />
|
<category term="心得体会" />
|
||||||
<category term="技术分享" />
|
<category term="技术分享" />
|
||||||
<category term="踩坑" />
|
<category term="踩坑" />
|
||||||
|
<entry>
|
||||||
|
<id>https://hitoli.com/2023/05/25/%E8%A7%A3%E5%86%B3MySQL%E6%8A%A5only-full-group-by%E9%94%99%E8%AF%AF/</id>
|
||||||
|
<title>解决MySQL报only_full_group_by错误</title>
|
||||||
|
<link rel="alternate" href="https://hitoli.com/2023/05/25/%E8%A7%A3%E5%86%B3MySQL%E6%8A%A5only-full-group-by%E9%94%99%E8%AF%AF/"/>
|
||||||
|
<content type="html"><h4 id="问题描述"><a class="anchor" href="#问题描述">#</a> 问题描述</h4>
|
||||||
|
<p>当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 ERROR 1055 only_full_group_by 错误,这是 5.7 之后 SQL_MODE 默认打开了严格模式导致的错误。说明你代码里有地方写的不严谨。</p>
|
||||||
|
<h4 id="解决方法"><a class="anchor" href="#解决方法">#</a> 解决方法</h4>
|
||||||
|
<ol>
|
||||||
|
<li>重写 sql</li>
|
||||||
|
<li>返回宽松模式</li>
|
||||||
|
</ol>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#查询 sql_mode</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">select</span> @<span class="token variable">@GLOBAL.sql_mode</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token comment">#删除 ONLY_FULL_GROUP_BY</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token comment">#设置 sql_mode</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">set</span> @<span class="token variable">@GLOBAL.sql_mode</span><span class="token operator">=</span><span class="token string">'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'</span><span class="token punctuation">;</span></pre></td></tr></table></figure><ol start="3">
|
||||||
|
<li>使用聚合函数<br />
|
||||||
|
如果某些特别的原因就是要查询未分组字段,但你又没空改代码,那么我们可使用聚合函数来规避这类错误,算是一种折中的方案了,语法改严谨了,代码又不需要大动。如 ANY_VALUE ()、MAX ()、MIN () 或者 GROUP_CONCAT () 等聚合函数。</li>
|
||||||
|
</ol>
|
||||||
|
</content>
|
||||||
|
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||||||
|
<category term="解决问题" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" />
|
||||||
|
<category term="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||||||
|
<updated>2023-05-25T10:25:00.000Z</updated>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<id>https://hitoli.com/2023/05/25/MySQL%E4%B8%AD%E7%9A%84any-value-%E5%87%BD%E6%95%B0/</id>
|
||||||
|
<title>MySQL中的any_value()函数</title>
|
||||||
|
<link rel="alternate" href="https://hitoli.com/2023/05/25/MySQL%E4%B8%AD%E7%9A%84any-value-%E5%87%BD%E6%95%B0/"/>
|
||||||
|
<content type="html"><h4 id="问题"><a class="anchor" href="#问题">#</a> 问题</h4>
|
||||||
|
<p>业务要求:查询所有省份:<br />
|
||||||
|
<img data-src="https://nas.hitoli.com:18014/images/2023/05/25/778f34f5670d.png" alt="" /></p>
|
||||||
|
<h4 id="方法"><a class="anchor" href="#方法">#</a> 方法</h4>
|
||||||
|
<ol>
|
||||||
|
<li>distinct 排除重复</li>
|
||||||
|
</ol>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token keyword">DISTINCT</span><span class="token punctuation">(</span>province_code<span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> province_name</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span></pre></td></tr><tr><td data-num="5"></td><td><pre> t_mip_base_area</pre></td></tr></table></figure><ol start="2">
|
||||||
|
<li>group by 根据身份编码分组</li>
|
||||||
|
</ol>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span> </pre></td></tr><tr><td data-num="2"></td><td><pre> province_code<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> any_value<span class="token punctuation">(</span>province_name<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> province_code</pre></td></tr></table></figure><h6 id="若这样写"><a class="anchor" href="#若这样写">#</a> 若这样写</h6>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span> </pre></td></tr><tr><td data-num="2"></td><td><pre> province_code<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> province_name</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> province_code</pre></td></tr></table></figure><p>则会报错<br />
|
||||||
|
<img data-src="https://nas.hitoli.com:18014/images/2023/05/25/c57a8e811928.png" alt="" /></p>
|
||||||
|
<h4 id="总结"><a class="anchor" href="#总结">#</a> 总结:</h4>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<p>MySQL5.7 之后,sql_mode 中 ONLY_FULL_GROUP_BY 模式默认设置为打开状态。</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>ONLY_FULL_GROUP_BY 的语义就是确定 select target list 中的所有列的值都是明确语义,简单的说来,在此模式下,target list 中的值要么是来自于聚合函数(sum、avg、max 等)的结果,要么是来自于 group by list 中的表达式的值</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>MySQL 提供了 any_value () 函数来抑制 ONLY_FULL_GROUP_BY 值被拒绝</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>any_value () 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据</p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</content>
|
||||||
|
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||||||
|
<category term="解决问题" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" />
|
||||||
|
<category term="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||||||
|
<updated>2023-05-25T10:07:00.000Z</updated>
|
||||||
|
</entry>
|
||||||
<entry>
|
<entry>
|
||||||
<id>https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/</id>
|
<id>https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/</id>
|
||||||
<title>命令大杂烩</title>
|
<title>命令大杂烩</title>
|
||||||
@ -627,77 +686,4 @@
|
|||||||
<category term="yarn" scheme="https://hitoli.com/tags/yarn/" />
|
<category term="yarn" scheme="https://hitoli.com/tags/yarn/" />
|
||||||
<updated>2022-11-04T07:21:00.000Z</updated>
|
<updated>2022-11-04T07:21:00.000Z</updated>
|
||||||
</entry>
|
</entry>
|
||||||
<entry>
|
|
||||||
<id>https://hitoli.com/2022/11/03/%E4%B8%8A%E7%8F%AD%E4%BA%86/</id>
|
|
||||||
<title>上班了</title>
|
|
||||||
<link rel="alternate" href="https://hitoli.com/2022/11/03/%E4%B8%8A%E7%8F%AD%E4%BA%86/"/>
|
|
||||||
<content type="html"><ul>
|
|
||||||
<li>终于又上班了。O (∩_∩) O~</li>
|
|
||||||
</ul>
|
|
||||||
</content>
|
|
||||||
<category term="生活" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/" />
|
|
||||||
<category term="心情" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/%E5%BF%83%E6%83%85/" />
|
|
||||||
<category term="心情" scheme="https://hitoli.com/tags/%E5%BF%83%E6%83%85/" />
|
|
||||||
<updated>2022-11-03T03:25:00.000Z</updated>
|
|
||||||
</entry>
|
|
||||||
<entry>
|
|
||||||
<id>https://hitoli.com/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/</id>
|
|
||||||
<title>2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的区别</title>
|
|
||||||
<link rel="alternate" href="https://hitoli.com/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/"/>
|
|
||||||
<content type="html"><h4 id="区别"><a class="anchor" href="#区别">#</a> 区别:</h4>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator"><span class="token file-descriptor important">2</span>></span>/dev/null</pre></td></tr></table></figure><p>意思就是把错误输出到 “黑洞”</p>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator">></span>/dev/null <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span></pre></td></tr></table></figure><p>默认情况是 1,也就是等同于 1&gt;/dev/null 2&gt;&amp;1。意思就是把标准输出重定向到 “黑洞”,还把错误输出 2 重定向到标准输出 1,也就是标准输出和错误输出都进了 “黑洞”</p>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span> <span class="token operator">></span>/dev/null</pre></td></tr></table></figure><p>意思就是把错误输出 2 重定向到标准出书 1,也就是屏幕,标准输出进了 “黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕</p>
|
|
||||||
<h4 id="解释"><a class="anchor" href="#解释">#</a> 解释:</h4>
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
<p>文件描述符<br />
|
|
||||||
Linux 系统预留三个文件描述符:0、1 和 2,他们的意义如下所示:<br />
|
|
||||||
0—— 标准输入(stdin)<br />
|
|
||||||
略...<br />
|
|
||||||
1—— 标准输出(stdout)<br />
|
|
||||||
在当前目录下,有且只有一个文件名称为 a.txt 的文件,这时我们运行这个命令【ls a.txt】, 就会获得一个标准输出 stdout 的输出结果:a.txt<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen629761046.jpg" alt="" /><br />
|
|
||||||
2—— 标准错误(stderr)<br />
|
|
||||||
在当前目录下,有且只有一个文件名称为 a.txt 的文件,我们运行命令【ls b.txt】,我们就会获得一个标准错误 stderr 的输出结果 “ls:无法访问 b.txt:没有这样的文件或目录”。<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen629793578.jpg" alt="" /></p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>重定向<br />
|
|
||||||
重定向的符号有两个:&gt; 或 &gt;&gt;,两者的区别是:前者会先清空文件,然后再写入内容,后者会将重定向的内容追加到现有文件的尾部。举例如下:</p>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<p>重定向标准输出 stdout<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen630033531.jpg" alt="" /><br />
|
|
||||||
如上图所示,对比没有添加重定向的操作,这条命令在使用之后并没有将 a.txt 打印到屏幕。在紧接的 cat 操作后,可以发现本来应该被输出的内容被记录到 stdout.txt 中。</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>重定向标准错误 stderr<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen630256640.jpg" alt="" /><br />
|
|
||||||
如上图所示,文件描述符 2,标准错误的重定向也是同样的原理被记录在了文件 stderr.txt 这个文件里面了。</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>可以将 stderr 单独定向到一个文件,stdout 重定向到另一个文件</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator"><span class="token file-descriptor important">2</span>></span> stderr.txt <span class="token operator"><span class="token file-descriptor important">1</span>></span>stdout.txt</pre></td></tr></table></figure><ul>
|
|
||||||
<li>也可以将 stderr 和 stdout 重定向到同一个文件</li>
|
|
||||||
</ul>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">></span> output.txt <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span></pre></td></tr></table></figure><ul>
|
|
||||||
<li>或采用下面的方法,可以少写几个字,能达到同样的效果</li>
|
|
||||||
</ul>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">&amp;></span> output.txt</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">>&amp;</span> output.txt <span class="token comment">#两个表达式效果一样的</span></pre></td></tr></table></figure><ol start="3">
|
|
||||||
<li>Linux 特殊文件<br />
|
|
||||||
/dev/null 是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null 这个设备通常也被称为位桶(bit bucket)或黑洞。<br />
|
|
||||||
所以,2&gt;/dev/null 的意思就是将标准错误 stderr 删掉。</li>
|
|
||||||
</ol>
|
|
||||||
</content>
|
|
||||||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
|
||||||
<category term="Shell" scheme="https://hitoli.com/categories/Linux/Shell/" />
|
|
||||||
<category term="Shell" scheme="https://hitoli.com/tags/Shell/" />
|
|
||||||
<category term="2>&1" scheme="https://hitoli.com/tags/2-1/" />
|
|
||||||
<updated>2022-11-02T08:29:00.000Z</updated>
|
|
||||||
</entry>
|
|
||||||
</feed>
|
</feed>
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
categories/工作/page/2/index.html
Normal file
1
categories/工作/page/2/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
136
rss.xml
136
rss.xml
@ -10,8 +10,8 @@
|
|||||||
</author>
|
</author>
|
||||||
<description>天生我材必有用</description>
|
<description>天生我材必有用</description>
|
||||||
<language>zh-CN</language>
|
<language>zh-CN</language>
|
||||||
<pubDate>Sun, 16 Apr 2023 13:32:00 +0800</pubDate>
|
<pubDate>Thu, 25 May 2023 18:25:00 +0800</pubDate>
|
||||||
<lastBuildDate>Sun, 16 Apr 2023 13:32:00 +0800</lastBuildDate>
|
<lastBuildDate>Thu, 25 May 2023 18:25:00 +0800</lastBuildDate>
|
||||||
<category term="hito" />
|
<category term="hito" />
|
||||||
<category term="無言" />
|
<category term="無言" />
|
||||||
<category term="博客" />
|
<category term="博客" />
|
||||||
@ -20,6 +20,65 @@
|
|||||||
<category term="心得体会" />
|
<category term="心得体会" />
|
||||||
<category term="技术分享" />
|
<category term="技术分享" />
|
||||||
<category term="踩坑" />
|
<category term="踩坑" />
|
||||||
|
<item>
|
||||||
|
<guid isPermalink="true">https://hitoli.com/2023/05/25/%E8%A7%A3%E5%86%B3MySQL%E6%8A%A5only-full-group-by%E9%94%99%E8%AF%AF/</guid>
|
||||||
|
<title>解决MySQL报only_full_group_by错误</title>
|
||||||
|
<link>https://hitoli.com/2023/05/25/%E8%A7%A3%E5%86%B3MySQL%E6%8A%A5only-full-group-by%E9%94%99%E8%AF%AF/</link>
|
||||||
|
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||||||
|
<category term="解决问题" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" />
|
||||||
|
<category term="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||||||
|
<pubDate>Thu, 25 May 2023 18:25:00 +0800</pubDate>
|
||||||
|
<description><![CDATA[ <h4 id="问题描述"><a class="anchor" href="#问题描述">#</a> 问题描述</h4>
|
||||||
|
<p>当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 ERROR 1055 only_full_group_by 错误,这是 5.7 之后 SQL_MODE 默认打开了严格模式导致的错误。说明你代码里有地方写的不严谨。</p>
|
||||||
|
<h4 id="解决方法"><a class="anchor" href="#解决方法">#</a> 解决方法</h4>
|
||||||
|
<ol>
|
||||||
|
<li>重写 sql</li>
|
||||||
|
<li>返回宽松模式</li>
|
||||||
|
</ol>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#查询 sql_mode</span></pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token keyword">select</span> @<span class="token variable">@GLOBAL.sql_mode</span><span class="token punctuation">;</span></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token comment">#删除 ONLY_FULL_GROUP_BY</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token comment">#设置 sql_mode</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">set</span> @<span class="token variable">@GLOBAL.sql_mode</span><span class="token operator">=</span><span class="token string">'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'</span><span class="token punctuation">;</span></pre></td></tr></table></figure><ol start="3">
|
||||||
|
<li>使用聚合函数<br />
|
||||||
|
如果某些特别的原因就是要查询未分组字段,但你又没空改代码,那么我们可使用聚合函数来规避这类错误,算是一种折中的方案了,语法改严谨了,代码又不需要大动。如 ANY_VALUE ()、MAX ()、MIN () 或者 GROUP_CONCAT () 等聚合函数。</li>
|
||||||
|
</ol>
|
||||||
|
]]></description>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<guid isPermalink="true">https://hitoli.com/2023/05/25/MySQL%E4%B8%AD%E7%9A%84any-value-%E5%87%BD%E6%95%B0/</guid>
|
||||||
|
<title>MySQL中的any_value()函数</title>
|
||||||
|
<link>https://hitoli.com/2023/05/25/MySQL%E4%B8%AD%E7%9A%84any-value-%E5%87%BD%E6%95%B0/</link>
|
||||||
|
<category term="工作" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/" />
|
||||||
|
<category term="解决问题" scheme="https://hitoli.com/categories/%E5%B7%A5%E4%BD%9C/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98/" />
|
||||||
|
<category term="mysql" scheme="https://hitoli.com/tags/mysql/" />
|
||||||
|
<pubDate>Thu, 25 May 2023 18:07:00 +0800</pubDate>
|
||||||
|
<description><![CDATA[ <h4 id="问题"><a class="anchor" href="#问题">#</a> 问题</h4>
|
||||||
|
<p>业务要求:查询所有省份:<br />
|
||||||
|
<img data-src="https://nas.hitoli.com:18014/images/2023/05/25/778f34f5670d.png" alt="" /></p>
|
||||||
|
<h4 id="方法"><a class="anchor" href="#方法">#</a> 方法</h4>
|
||||||
|
<ol>
|
||||||
|
<li>distinct 排除重复</li>
|
||||||
|
</ol>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token keyword">DISTINCT</span><span class="token punctuation">(</span>province_code<span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> province_name</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span></pre></td></tr><tr><td data-num="5"></td><td><pre> t_mip_base_area</pre></td></tr></table></figure><ol start="2">
|
||||||
|
<li>group by 根据身份编码分组</li>
|
||||||
|
</ol>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span> </pre></td></tr><tr><td data-num="2"></td><td><pre> province_code<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> any_value<span class="token punctuation">(</span>province_name<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> province_code</pre></td></tr></table></figure><h6 id="若这样写"><a class="anchor" href="#若这样写">#</a> 若这样写</h6>
|
||||||
|
<figure class="highlight sql"><figcaption data-lang="SQL"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">SELECT</span> </pre></td></tr><tr><td data-num="2"></td><td><pre> province_code<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre> province_name</pre></td></tr><tr><td data-num="4"></td><td><pre><span class="token keyword">FROM</span> t_mip_base_area</pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> province_code</pre></td></tr></table></figure><p>则会报错<br />
|
||||||
|
<img data-src="https://nas.hitoli.com:18014/images/2023/05/25/c57a8e811928.png" alt="" /></p>
|
||||||
|
<h4 id="总结"><a class="anchor" href="#总结">#</a> 总结:</h4>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<p>MySQL5.7 之后,sql_mode 中 ONLY_FULL_GROUP_BY 模式默认设置为打开状态。</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>ONLY_FULL_GROUP_BY 的语义就是确定 select target list 中的所有列的值都是明确语义,简单的说来,在此模式下,target list 中的值要么是来自于聚合函数(sum、avg、max 等)的结果,要么是来自于 group by list 中的表达式的值</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>MySQL 提供了 any_value () 函数来抑制 ONLY_FULL_GROUP_BY 值被拒绝</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>any_value () 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据</p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
]]></description>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<guid isPermalink="true">https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/</guid>
|
<guid isPermalink="true">https://hitoli.com/2023/04/16/%E5%91%BD%E4%BB%A4%E5%A4%A7%E6%9D%82%E7%83%A9/</guid>
|
||||||
<title>命令大杂烩</title>
|
<title>命令大杂烩</title>
|
||||||
@ -630,78 +689,5 @@
|
|||||||
</ul>
|
</ul>
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">rm</span> dist <span class="token parameter variable">-fr</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">yarn</span> build</pre></td></tr></table></figure> ]]></description>
|
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">rm</span> dist <span class="token parameter variable">-fr</span></pre></td></tr><tr><td data-num="2"></td><td><pre></pre></td></tr><tr><td data-num="3"></td><td><pre><span class="token function">yarn</span> build</pre></td></tr></table></figure> ]]></description>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<guid isPermalink="true">https://hitoli.com/2022/11/03/%E4%B8%8A%E7%8F%AD%E4%BA%86/</guid>
|
|
||||||
<title>上班了</title>
|
|
||||||
<link>https://hitoli.com/2022/11/03/%E4%B8%8A%E7%8F%AD%E4%BA%86/</link>
|
|
||||||
<category term="生活" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/" />
|
|
||||||
<category term="心情" scheme="https://hitoli.com/categories/%E7%94%9F%E6%B4%BB/%E5%BF%83%E6%83%85/" />
|
|
||||||
<category term="心情" scheme="https://hitoli.com/tags/%E5%BF%83%E6%83%85/" />
|
|
||||||
<pubDate>Thu, 03 Nov 2022 11:25:00 +0800</pubDate>
|
|
||||||
<description><![CDATA[ <ul>
|
|
||||||
<li>终于又上班了。O (∩_∩) O~</li>
|
|
||||||
</ul>
|
|
||||||
]]></description>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<guid isPermalink="true">https://hitoli.com/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/</guid>
|
|
||||||
<title>2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的区别</title>
|
|
||||||
<link>https://hitoli.com/2022/11/02/2-dev-null%E5%92%8C-dev-null-2-1%E5%92%8C2-1-dev-null%E7%9A%84%E5%8C%BA%E5%88%AB/</link>
|
|
||||||
<category term="Linux" scheme="https://hitoli.com/categories/Linux/" />
|
|
||||||
<category term="Shell" scheme="https://hitoli.com/categories/Linux/Shell/" />
|
|
||||||
<category term="Shell" scheme="https://hitoli.com/tags/Shell/" />
|
|
||||||
<category term="2>&1" scheme="https://hitoli.com/tags/2-1/" />
|
|
||||||
<pubDate>Wed, 02 Nov 2022 16:29:00 +0800</pubDate>
|
|
||||||
<description><![CDATA[ <h4 id="区别"><a class="anchor" href="#区别">#</a> 区别:</h4>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator"><span class="token file-descriptor important">2</span>></span>/dev/null</pre></td></tr></table></figure><p>意思就是把错误输出到 “黑洞”</p>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator">></span>/dev/null <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span></pre></td></tr></table></figure><p>默认情况是 1,也就是等同于 1&gt;/dev/null 2&gt;&amp;1。意思就是把标准输出重定向到 “黑洞”,还把错误输出 2 重定向到标准输出 1,也就是标准输出和错误输出都进了 “黑洞”</p>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span> <span class="token operator">></span>/dev/null</pre></td></tr></table></figure><p>意思就是把错误输出 2 重定向到标准出书 1,也就是屏幕,标准输出进了 “黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕</p>
|
|
||||||
<h4 id="解释"><a class="anchor" href="#解释">#</a> 解释:</h4>
|
|
||||||
<ol>
|
|
||||||
<li>
|
|
||||||
<p>文件描述符<br />
|
|
||||||
Linux 系统预留三个文件描述符:0、1 和 2,他们的意义如下所示:<br />
|
|
||||||
0—— 标准输入(stdin)<br />
|
|
||||||
略...<br />
|
|
||||||
1—— 标准输出(stdout)<br />
|
|
||||||
在当前目录下,有且只有一个文件名称为 a.txt 的文件,这时我们运行这个命令【ls a.txt】, 就会获得一个标准输出 stdout 的输出结果:a.txt<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen629761046.jpg" alt="" /><br />
|
|
||||||
2—— 标准错误(stderr)<br />
|
|
||||||
在当前目录下,有且只有一个文件名称为 a.txt 的文件,我们运行命令【ls b.txt】,我们就会获得一个标准错误 stderr 的输出结果 “ls:无法访问 b.txt:没有这样的文件或目录”。<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen629793578.jpg" alt="" /></p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>重定向<br />
|
|
||||||
重定向的符号有两个:&gt; 或 &gt;&gt;,两者的区别是:前者会先清空文件,然后再写入内容,后者会将重定向的内容追加到现有文件的尾部。举例如下:</p>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<p>重定向标准输出 stdout<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen630033531.jpg" alt="" /><br />
|
|
||||||
如上图所示,对比没有添加重定向的操作,这条命令在使用之后并没有将 a.txt 打印到屏幕。在紧接的 cat 操作后,可以发现本来应该被输出的内容被记录到 stdout.txt 中。</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>重定向标准错误 stderr<br />
|
|
||||||
<img data-src="https://nas.hitoli.com:18014/images/2022/11/01/newscreen630256640.jpg" alt="" /><br />
|
|
||||||
如上图所示,文件描述符 2,标准错误的重定向也是同样的原理被记录在了文件 stderr.txt 这个文件里面了。</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<p>可以将 stderr 单独定向到一个文件,stdout 重定向到另一个文件</p>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator"><span class="token file-descriptor important">2</span>></span> stderr.txt <span class="token operator"><span class="token file-descriptor important">1</span>></span>stdout.txt</pre></td></tr></table></figure><ul>
|
|
||||||
<li>也可以将 stderr 和 stdout 重定向到同一个文件</li>
|
|
||||||
</ul>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">></span> output.txt <span class="token operator"><span class="token file-descriptor important">2</span>></span><span class="token file-descriptor important">&amp;1</span></pre></td></tr></table></figure><ul>
|
|
||||||
<li>或采用下面的方法,可以少写几个字,能达到同样的效果</li>
|
|
||||||
</ul>
|
|
||||||
<figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">&amp;></span> output.txt</pre></td></tr><tr><td data-num="2"></td><td><pre><span class="token function">ls</span> b.txt <span class="token operator">>&amp;</span> output.txt <span class="token comment">#两个表达式效果一样的</span></pre></td></tr></table></figure><ol start="3">
|
|
||||||
<li>Linux 特殊文件<br />
|
|
||||||
/dev/null 是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null 这个设备通常也被称为位桶(bit bucket)或黑洞。<br />
|
|
||||||
所以,2&gt;/dev/null 的意思就是将标准错误 stderr 删掉。</li>
|
|
||||||
</ol>
|
|
||||||
]]></description>
|
|
||||||
</item>
|
|
||||||
</channel>
|
</channel>
|
||||||
</rss>
|
</rss>
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user