欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql無法選取非聚合列的解決方法

 更新時間:2018年09月05日 16:50:27   作者:GodBMW  
這篇文章主要給大家介紹了關于Mysql無法選取非聚合列的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 前言

最近升級博客,給文章頁面底部增加了兩個按鈕,可以直接跳轉到上一篇和下一篇。

如下圖所示:

實現(xiàn)這個功能的難點在于:數(shù)據(jù)庫怎么選取出一條記錄的前后兩條相鄰的記錄?

2. 數(shù)據(jù)庫設計

關于我文章數(shù)據(jù)庫的設計如下圖所示:

 

可以看到,每條記錄的身份是索引Id。因為之前有很多文章記錄被刪除了,所以,Id并不是連續(xù)的。

如果當前文章的索引值是33,那么可以通過以下命令來得到前后相鄰的 2 篇文章:

select * from passage where id in
(select
case
when SIGN(id - 32 )>0 THEN MIN(id)
when SIGN(id - 32 )<0 THEN MAX(id)
end
from passage
where id != 34
GROUP BY SIGN(id- 32 )
ORDER BY SIGN(id- 32 )
)
ORDER BY id;

3. 無法選取聚合列

在執(zhí)行上面命令時,Mysql給了我個: SELECT list is not in GROUP BY clause ... 的報錯。經(jīng)過 Google 得知,mysql 5.7以上,默認啟動了only_full_group_by,MySQL 就會拒絕選擇列表、條件或順序列表引用的查詢。

以下是原文:

Reject queries for which the select list, HAVING condition, or ORDER BY list refer to nonaggregated columns that are neither named in the GROUP BY clause nor are functionally dependent on (uniquely determined by) GROUP BY columns. As of MySQL 5.7.5, the default SQL mode includes ONLY_FULL_GROUP_BY. (Before 5.7.5, MySQL does not detect functional dependency and ONLY_FULL_GROUP_BY is not enabled by default. For a description of pre-5.7.5 behavior, see the MySQL 5.6 Reference Manual.)

所以,我們應該設置sql_mode中不包含only_full_group_by選項。MySQL 5.7.5后only_full_group_by成為sql_mode的默認選項之一,這可能導致一些sql語句失效。

進入 mysql 配置文件,在[mysqld]部分中添加以下配置,并且重啟 mysql 即可。

[mysqld]
# ... other config
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # delete 'only_full_group_by'
# ... other config

運行本文第二部分的 mysql 的命令,結果如下圖所示:

4. 相關鏈接

only_full_group_by

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • mysql視圖功能與用法實例分析

    mysql視圖功能與用法實例分析

    這篇文章主要介紹了mysql視圖功能與用法,結合實例形式分析了mysql數(shù)據(jù)庫視圖的概念、功能、使用方法、與臨時表的區(qū)別及操作相關注意事項,需要的朋友可以參考下
    2019-04-04
  • 提高SQL代碼可讀性的10種技巧

    提高SQL代碼可讀性的10種技巧

    SQL,這門備受推崇的編程語言,在關系數(shù)據(jù)庫操作中扮演著不可或缺的角色,然而,伴隨著數(shù)據(jù)庫模式的不斷增長和不斷演進,編寫和維護SQL代碼可能會變得相當具有挑戰(zhàn)性,為了確保你的SQL代碼能夠具備高可讀性、易維護性以及出色的性能,以下是十個不容忽視的最佳實踐
    2023-10-10
  • 詳解SQL四種語言:DDL DML DCL TCL

    詳解SQL四種語言:DDL DML DCL TCL

    本文詳細介紹了sql的四種語言,包括數(shù)據(jù)定義語言(DDL)、數(shù)據(jù)操作語言(DML)、數(shù)據(jù)控制語言(DCL)和事物控制語言(TCL)。在這幾種語言中有疑惑的可以來看看這篇文章。
    2016-07-07
  • MySQL初學者可以告別分組聚合查詢的困擾了

    MySQL初學者可以告別分組聚合查詢的困擾了

    這篇文章主要為大家介紹了MySQL分組聚合查詢的難點講解,幫助MySQL初學著告別分組聚合查詢的困擾,有需要的朋友可以借鑒參考下,希望能夠有所進步
    2021-10-10
  • MySQL 查看鏈接及殺掉異常鏈接的方法

    MySQL 查看鏈接及殺掉異常鏈接的方法

    這篇文章主要介紹了MySQL 查看鏈接及殺掉異常鏈接的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • SQL?中?HAVING?常見的使用方法

    SQL?中?HAVING?常見的使用方法

    這篇文章主要介紹了SQL中HAVING常見的使用方法,文章通過圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • mysql指定某行或者某列的排序實現(xiàn)方法

    mysql指定某行或者某列的排序實現(xiàn)方法

    這篇文章主要介紹了mysql指定某行或者某列的排序,需要的朋友可以參考下
    2017-05-05
  • Mysql查詢時如何使用for update行鎖還是表鎖

    Mysql查詢時如何使用for update行鎖還是表鎖

    這篇文章主要介紹了Mysql查詢時如何使用for update行鎖還是表鎖問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • CentOS下重置MySQL的root密碼的教程

    CentOS下重置MySQL的root密碼的教程

    這篇文章主要介紹了CentOS下重置MySQL的root密碼的教程,首先要擁有系統(tǒng)的root權限,最后還附屬了一個使用mysqladmin下的方法,需要的朋友可以參考下
    2015-11-11
  • 淺談如何保證Mysql主從一致

    淺談如何保證Mysql主從一致

    這篇文章主要介紹了淺談如何保證Mysql主從一致
    2022-03-03

最新評論