中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

做網(wǎng)站需要技術(shù)查詢關(guān)鍵詞排名軟件

做網(wǎng)站需要技術(shù),查詢關(guān)鍵詞排名軟件,浙江建設(shè)信息港網(wǎng)站查詢,163郵箱注冊(cè)項(xiàng)目場(chǎng)景 有時(shí)候,遇到數(shù)據(jù)庫(kù)重復(fù)數(shù)據(jù),需要將數(shù)據(jù)進(jìn)行分組,并取出其中一條來(lái)展示,這時(shí)就需要用到group by語(yǔ)句。 但是,如果mysql是高版本,當(dāng)執(zhí)行g(shù)roup by時(shí),select的字段不屬于group by的字段的…

項(xiàng)目場(chǎng)景

有時(shí)候,遇到數(shù)據(jù)庫(kù)重復(fù)數(shù)據(jù),需要將數(shù)據(jù)進(jìn)行分組,并取出其中一條來(lái)展示,這時(shí)就需要用到group by語(yǔ)句。
但是,如果mysql是高版本,當(dāng)執(zhí)行g(shù)roup by時(shí),select的字段不屬于group by的字段的話,sql語(yǔ)句就會(huì)報(bào)錯(cuò)。報(bào)錯(cuò)信息如下:

Expression #1 of SELECT list is not in GROUP BY clause and contains
nonaggregated column ‘?dāng)?shù)據(jù)庫(kù)名.表名.字段名’ which is not functionally dependent
on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by

問題描述

1.表結(jié)構(gòu)

CREATE TABLE `t_iov_help_feedback` (`ID` INT(11) NOT NULL  AUTO_INCREMENT COMMENT '主鍵ID',`USER_ID` INT(255) DEFAULT NULL  COMMENT '用戶ID',`problems` VARCHAR(255) DEFAULT NULL COMMENT '問題描述',`last_updated_date` DATETIME DEFAULT NULL COMMENT '最后更新時(shí)間',PRIMARY KEY (`ID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

2.表數(shù)據(jù)

在這里插入圖片描述

3.sql語(yǔ)句

1)查詢group by的字段(正常

SELECT USER_ID  FROM  t_iov_help_feedback GROUP BY USER_ID;

在這里插入圖片描述

SELECT MAX(ID),USER_ID  FROM  t_iov_help_feedback GROUP BY USER_ID;

在這里插入圖片描述

2)查詢非group by的字段(報(bào)錯(cuò)

在這里插入圖片描述

報(bào)錯(cuò)什么意思呢?
一句話概括:“錯(cuò)誤代碼1055與sql_mode = only_full_group_by不兼容”
翻譯:

“錯(cuò)誤代碼:1055。SELECT列表的表達(dá)式#1不在GROUP BY子句中,并且包含非聚合列’test.t_iov_help_feedback.ID’,它在功能上不依賴于GROUP BY子句中的列; 這與sql_mode = only_full_group_by不兼容”

原因分析

  • 一、原理層面
    這個(gè)錯(cuò)誤發(fā)生在mysql 5.7.5 版本及以上版本會(huì)出現(xiàn)的問題:
    mysql 5.7.5版本以上默認(rèn)的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,這個(gè)配置嚴(yán)格執(zhí)行了"SQL92標(biāo)準(zhǔn)"。
    很多從5.6升級(jí)到5.7時(shí),為了語(yǔ)法兼容,大部分都會(huì)選擇調(diào)整sql_mode,使其保持跟5.6一致,為了盡量兼容程序。

  • 二、sql層面
    在sql執(zhí)行時(shí),出現(xiàn)該原因,簡(jiǎn)單來(lái)說(shuō)就是:
    由于開啟了ONLY_FULL_GROUP_BY的設(shè)置,如果select 的字段不在 group by 中,
    并且select 的字段未使用聚合函數(shù)(SUM,AVG,MAX,MIN等)的話,那么這條sql查詢是被mysql認(rèn)為非法的,會(huì)報(bào)錯(cuò)誤…

驗(yàn)證是否此原因:

1.查詢數(shù)據(jù)庫(kù)版本的語(yǔ)句

SELECT VERSION();

在這里插入圖片描述

可以看到,我這里數(shù)據(jù)庫(kù)版本是:8.0.16,大于5.7.5了

2. 查看sql_mode的語(yǔ)句

select @@GLOBAL.sql_mode;

在這里插入圖片描述
查詢出來(lái)的值為:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

可以看到,sql_mode開啟了only_full_group_by 屬性

解決方案

解決方案一:使用函數(shù)ANY_VALUE()包含報(bào)錯(cuò)字段

將上述報(bào)錯(cuò)語(yǔ)句改成:

SELECT ANY_VALUE(ID),USER_ID,ANY_VALUE(problems),ANY_VALUE(last_updated_date) FROM  t_iov_help_feedback GROUP BY USER_ID;

在這里插入圖片描述
可以看到,結(jié)果能正常查詢了,根據(jù)需要自己改查詢字段的別名就行。

ANY_VALUE()函數(shù)說(shuō)明:

MySQL有any_value(field)函數(shù),它主要的作用就是抑制ONLY_FULL_GROUP_BY值被拒絕。
這樣sql語(yǔ)句不管是在ONLY_FULL_GROUP_BY模式關(guān)閉狀態(tài)還是在開啟模式都可以正常執(zhí)行,不被mysql拒絕。
any_value()會(huì)選擇被分到同一組的數(shù)據(jù)里第一條數(shù)據(jù)的指定列值作為返回?cái)?shù)據(jù)。
官方有介紹,地址:https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value

解決方案二:通過(guò)sql語(yǔ)句暫時(shí)性修改sql_mode

去掉ONLY_FULL_GROUP_BY,重新設(shè)置值

SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

上面是改變了全局sql_mode,對(duì)于新建的數(shù)據(jù)庫(kù)有效。對(duì)于已存在的數(shù)據(jù)庫(kù),則需要在對(duì)應(yīng)的數(shù)據(jù)庫(kù)下執(zhí)行:

SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

問題:

重啟mysql數(shù)據(jù)庫(kù)服務(wù)之后,ONLY_FULL_GROUP_BY還會(huì)出現(xiàn),所以這只是暫時(shí)性的。

備注:
網(wǎng)上有些朋友提供的sql語(yǔ)句如下:

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

但是卻執(zhí)行不了,報(bào)sql語(yǔ)法錯(cuò)誤:
在這里插入圖片描述

這時(shí)只需要加上單引號(hào)即可:
在這里插入圖片描述

但是,添加了單引號(hào)仍然報(bào)錯(cuò):
在這里插入圖片描述

這里說(shuō)sql_mode不能設(shè)置NO_AUTO_CREATE_USER這個(gè)值,那直接去掉這個(gè)值就行了唄,也就是上面我提供的值。

解決方案三:通過(guò)配置文件永久修改sql_mode

mysql安裝在服務(wù)器上和安裝在本地,修改配置文件的方式有點(diǎn)區(qū)別。

1、Linux下修改配置文件

1)登錄進(jìn)入MySQL
使用命令 mysql -u username -p 進(jìn)行登陸,然后輸入密碼,輸入SQL:

show variables like ‘%sql_mode’;

在這里插入圖片描述

2)編輯my.cnf文件
文件地址一般在:/etc/my.cnf,/etc/mysql/my.cnf
使用vim命令編輯文件,不知道vim命令怎么使用的,可以參考我的另外篇文章:Linux中使用vi工具進(jìn)行文本編輯
找到sql-mode的位置,去掉ONLY_FULL_GROUP_BY
然后重啟MySQL;
有的my.cnf中可能沒有sql-mode,需要追加:

sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

注意要加入到[mysqld]下面,如加入到其他地方,重啟后也不生效,具體的如下圖:
在這里插入圖片描述3)

3)修改成功后重啟MySQL服務(wù)

service mysql restart

重啟好后,再登錄mysql,輸入SQL:show variables like ‘%sql_mode’; 如果沒有ONLY_FULL_GROUP_BY,就說(shuō)明已經(jīng)成功了。
在這里插入圖片描述

如果還不行,那么只保留STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION 即可
追加內(nèi)容為:

sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

2、window下修改配置文件

1)找到mysql安裝目錄,用記事本直接打開my.ini文件
在這里插入圖片描述

2)編輯my.ini文件,在[mysql]標(biāo)簽下追加內(nèi)容

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

在這里插入圖片描述

3)重啟mysql 服務(wù)
在這里插入圖片描述

備注:
網(wǎng)上有些提供了sql_mode的值,卻導(dǎo)致重啟mysql服務(wù)啟動(dòng)不了

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

這時(shí),只需要將sql_mode 值中 “NO_AUTO_CREATE_USER” 這個(gè)屬性去掉即可。

http://www.risenshineclean.com/news/4429.html

相關(guān)文章:

  • 做網(wǎng)站的主機(jī)配置推銷產(chǎn)品怎么推廣
  • 海鹽市網(wǎng)站建設(shè)株洲專業(yè)seo優(yōu)化
  • 怎樣用c語(yǔ)言做網(wǎng)站北京seo推廣系統(tǒng)
  • 華為外包做的網(wǎng)站現(xiàn)在推廣引流什么平臺(tái)比較火
  • 湖北省利川市建設(shè)局網(wǎng)站企業(yè)網(wǎng)站優(yōu)化
  • 做網(wǎng)站排名工具如何讓產(chǎn)品吸引顧客
  • 可做區(qū)域代理的網(wǎng)站seo咨詢師
  • 泉州做網(wǎng)站的網(wǎng)上推廣渠道有哪些
  • 網(wǎng)絡(luò)營(yíng)銷以什么為中心官網(wǎng)seo哪家公司好
  • 可以免費(fèi)進(jìn)入的網(wǎng)站正能量域名網(wǎng)址關(guān)鍵詞查詢網(wǎng)站
  • 在線下單網(wǎng)站怎么做網(wǎng)站seo診斷
  • 專業(yè)網(wǎng)站設(shè)計(jì)推薦百度云資源搜索
  • 給網(wǎng)站做引流多少錢2023年中國(guó)進(jìn)入一級(jí)戰(zhàn)備狀態(tài)了嗎
  • 怎么做網(wǎng)站編程高質(zhì)量外鏈
  • 嘉興個(gè)人建站seo主要做什么工作
  • 我的世界做指令的網(wǎng)站網(wǎng)站優(yōu)化的方式有哪些
  • 怎么查看網(wǎng)站根目錄深圳seo排名哪家好
  • 石家莊招聘哪個(gè)網(wǎng)站做的好公司軟文推廣
  • 展廳設(shè)計(jì)策劃方案南寧正規(guī)的seo費(fèi)用
  • 公司企業(yè)網(wǎng)站的選擇seo專員工作內(nèi)容
  • 網(wǎng)站免費(fèi)空間免備案培訓(xùn)機(jī)構(gòu)學(xué)校
  • 百度搜索引擎收錄入口seo銷售好做嗎
  • 手機(jī)動(dòng)態(tài)網(wǎng)站模板網(wǎng)絡(luò)營(yíng)銷推廣方案論文
  • 南京裝修公司做網(wǎng)站武漢關(guān)鍵詞排名推廣
  • 寧波seo推廣優(yōu)化提升seo排名
  • 江蘇省常州建設(shè)高等職業(yè)技術(shù)學(xué)校網(wǎng)站軟文推廣經(jīng)典案例
  • wordpress 流媒體seo關(guān)鍵詞排名優(yōu)
  • 關(guān)于做公司網(wǎng)站建設(shè)你應(yīng)該知道的seo每日一貼
  • 網(wǎng)站實(shí)現(xiàn)seo公司發(fā)展前景
  • 企業(yè)免費(fèi)建站網(wǎng)站網(wǎng)站如何添加友情鏈接