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

Mysql無(wú)法選取非聚合列的解決方法

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

1. 前言

最近升級(jí)博客,給文章頁(yè)面底部增加了兩個(gè)按鈕,可以直接跳轉(zhuǎn)到上一篇和下一篇。

如下圖所示:

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

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

關(guān)于我文章數(shù)據(jù)庫(kù)的設(shè)計(jì)如下圖所示:

 

可以看到,每條記錄的身份是索引Id。因?yàn)橹坝泻芏辔恼掠涗洷粍h除了,所以,Id并不是連續(xù)的。

如果當(dāng)前文章的索引值是33,那么可以通過(guò)以下命令來(lái)得到前后相鄰的 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. 無(wú)法選取聚合列

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

以下是原文:

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.)

所以,我們應(yīng)該設(shè)置sql_mode中不包含only_full_group_by選項(xiàng)。MySQL 5.7.5后only_full_group_by成為sql_mode的默認(rèn)選項(xiàng)之一,這可能導(dǎo)致一些sql語(yǔ)句失效。

進(jìn)入 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

運(yùn)行本文第二部分的 mysql 的命令,結(jié)果如下圖所示:

4. 相關(guān)鏈接

only_full_group_by

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • mysql視圖功能與用法實(shí)例分析

    mysql視圖功能與用法實(shí)例分析

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

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

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

    詳解SQL四種語(yǔ)言:DDL DML DCL TCL

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

    MySQL初學(xué)者可以告別分組聚合查詢(xún)的困擾了

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

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

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

    SQL?中?HAVING?常見(jiàn)的使用方法

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

    mysql指定某行或者某列的排序?qū)崿F(xiàn)方法

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

    Mysql查詢(xún)時(shí)如何使用for update行鎖還是表鎖

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

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

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

    淺談如何保證Mysql主從一致

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

最新評(píng)論