MySQL如何同時(shí)自增自減多個(gè)字段

      網(wǎng)友投稿 645 2025-04-02

      本文將帶大家聊一下如何同時(shí)自增自減多個(gè)字段

      Mysql如何同時(shí)自增自減多個(gè)字段

      前言

      一、ThinkPHP框架實(shí)現(xiàn)

      二、翻騰一下源碼

      三、使用SQL語(yǔ)句進(jìn)行實(shí)現(xiàn)

      四、總結(jié)

      前言

      最近小Q同學(xué)去面試了,然后就問(wèn)了題目的問(wèn)題,如何同時(shí)自增自減多個(gè)字段。

      小Q一時(shí)回答不出來(lái),最終的結(jié)果就是回家等通知…

      關(guān)于這個(gè)問(wèn)題咔咔來(lái)給小Q簡(jiǎn)單的進(jìn)行解答一下。

      一、ThinkPHP框架實(shí)現(xiàn)

      小Q最熟悉的框架就是ThinkPHP,那么咔咔就先使用ThinkPHP來(lái)解決這個(gè)問(wèn)題。

      首先,解決這個(gè)問(wèn)題需要對(duì)框架的inc和setInc有一定的了解,在框架中也就是使用這倆個(gè)函數(shù)進(jìn)行自增或者自減的。

      但是倆者是有區(qū)別的,inc是Db類中的方法,setInc實(shí)際調(diào)用的是模型中的方法,但是最終都使用的是thinkphp/library/think/db/Query.php這個(gè)文件的方法。

      這一塊的源碼咔咔就不看了,后邊在說(shuō)吧!先解決當(dāng)下問(wèn)題,小Q很著急的。

      大家在寫自增的方法時(shí)會(huì)不會(huì)跟小Q一樣一直都使用的是setInc,小Q拿到這個(gè)問(wèn)題時(shí)是這樣想的。

      當(dāng)訪問(wèn)時(shí)會(huì)無(wú)情的出現(xiàn)給小Q一個(gè)沉痛一擊。

      于是這種方式是不可行的,但是還是想實(shí)現(xiàn)這個(gè)功能怎么辦呢!

      不著急咔咔帶你訪問(wèn)新大陸。

      直接使用倆個(gè)inc方法來(lái)進(jìn)行對(duì)多字段自增或者自減,那么咔咔這個(gè)思路也是簡(jiǎn)單的看源碼來(lái)的。

      又或者大家應(yīng)該都在使用thinkphp框架時(shí)都在一個(gè)查詢中使用過(guò)倆個(gè)where方法吧!其實(shí)思路都一樣既然倆個(gè)where都可以實(shí)現(xiàn)查詢。

      那么那倆個(gè)inc應(yīng)該也會(huì)是可以實(shí)現(xiàn)多個(gè)字段進(jìn)行自增或者自減的。

      所以說(shuō)咔咔最后的解決方案就是如上圖的解決方案。

      二、翻騰一下源碼

      在這個(gè)過(guò)程中咔咔還是去無(wú)聊的翻騰了一下關(guān)于inc的實(shí)現(xiàn)過(guò)程。

      在下圖中主要看關(guān)于參數(shù)給予的解釋,可以看到第一個(gè)參數(shù)是可以為數(shù)組或者字符串的。

      但是在根據(jù)代碼會(huì)發(fā)現(xiàn),雖然支持多個(gè)字段自增或者自減但是步長(zhǎng)卻是一個(gè)值。

      所以說(shuō)框架給提供的這個(gè)方法是可以同時(shí)自增或者自減多個(gè)字段,但是值只能是固定的。

      如果想要實(shí)現(xiàn)多個(gè)字段多個(gè)步長(zhǎng)就需要來(lái)修改源碼來(lái)解決這個(gè)問(wèn)題。

      以下是咔咔修改源碼后的內(nèi)容,可以跟inc源碼那一幅圖做對(duì)比。

      咔咔修改的源碼主要為圈到的地方,因?yàn)閟tep這個(gè)值在源碼中是直接給定義為1了。

      所以就需要修改這一塊,使用is_array來(lái)進(jìn)行檢測(cè)這個(gè)變量是否為數(shù)組就可以了。

      經(jīng)過(guò)以上的操作就可以實(shí)現(xiàn)針對(duì)多個(gè)字段多個(gè)步長(zhǎng)進(jìn)行自增或者自減了。

      咔咔這種直接修改源碼是不建議大家借鑒的,只是針對(duì)一個(gè)問(wèn)題我們要學(xué)會(huì)去在源碼中找到解決方案。

      所以說(shuō)針對(duì)如何同時(shí)自增自減多個(gè)字段這個(gè)問(wèn)題咔咔還是建議使用方案一的解決方法。

      畢竟這種情況是屬于少數(shù)的,在框架基礎(chǔ)改著改著自己都會(huì)亂。

      三、使用SQL語(yǔ)句進(jìn)行實(shí)現(xiàn)

      如果為了解決問(wèn)題這一節(jié)的內(nèi)容就不用在看了,看第一節(jié)就可以完美的解決你的問(wèn)題了。

      咔咔是喜歡琢磨一個(gè)問(wèn)題使用多種方案進(jìn)行解決。

      那么接下來(lái)咔咔再使用SQL語(yǔ)句對(duì)這個(gè)問(wèn)題進(jìn)行深度的解析。

      既然咱們都已經(jīng)在第一節(jié)中將實(shí)現(xiàn)方案都已經(jīng)實(shí)現(xiàn)了,在框架中有一個(gè)方法fetchSql(),可以直接打印出sql語(yǔ)句。

      那么就來(lái)看一下這個(gè)sql語(yǔ)句是什么樣的。

      UPDATE `table` SET `filed1` = `filed1` + 200 , `filed2` = `filed2` + 86 WHERE `time` BETWEEN 1609689600 AND 1609775999

      1

      2

      以上就是使用框架提供的方法打印出的SQL語(yǔ)句,表名和字段咔咔都做了更改,直接修改為自己需要自增或者自減的字段即可。

      使用這個(gè)SQL語(yǔ)句是可以解決本文主題的,所以咔咔就沒有給出打印結(jié)果一系列的截圖,如果感興趣的可以去自己測(cè)試一下。

      俗話說(shuō)的好,光說(shuō)不練假把式,還是需要自己進(jìn)行多多練習(xí)的。

      以上就是使用原生sql在框架中實(shí)現(xiàn)的同時(shí)自增自減多個(gè)字段并且多個(gè)步長(zhǎng)。

      四、總結(jié)

      這個(gè)問(wèn)題其實(shí)本質(zhì)很簡(jiǎn)單,框架也給提供了對(duì)應(yīng)的方法,只需要直接調(diào)用就行了。

      問(wèn)題難在就是對(duì)框架給提供的自增或者自減的方法你知道幾個(gè),框架給提供了inc和setInc這個(gè)倆種方式。

      MySQL如何同時(shí)自增自減多個(gè)字段

      如果你只知道setInc那豈不是就吉吉思密達(dá)了,所以沒事還是多看看源碼和文檔,對(duì)你只有好處沒有壞處。

      還有一個(gè)問(wèn)題就是關(guān)于咔咔在文章中提到了使用新的方式來(lái)實(shí)現(xiàn)同時(shí)自增自減多個(gè)字段,這種方式在框架底層進(jìn)行了修改。

      這種實(shí)現(xiàn)方式不推薦使用,修改源碼只是為了測(cè)試,也是對(duì)自己閱讀源碼的能力進(jìn)行提升,而不是在框架底層無(wú)所畏懼的進(jìn)行修改。

      堅(jiān)持學(xué)習(xí)、堅(jiān)持寫博、堅(jiān)持分享是咔咔從業(yè)以來(lái)一直所秉持的信念。希望在偌大互聯(lián)網(wǎng)中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

      Mysql SQL

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何用透視表做excel圖表(透視表excel透視圖怎么做)
      下一篇:WPS表格畫出錢袋子形狀的方法
      相關(guān)文章
      久久精品国产精品亚洲| 亚洲精品国精品久久99热| 国产亚洲av片在线观看16女人 | 久久精品国产亚洲AV电影网| 国产精品亚洲自在线播放页码 | 国产亚洲精午夜久久久久久| 夜色阁亚洲一区二区三区| 久久水蜜桃亚洲AV无码精品| 亚洲人成网站在线播放2019| 亚洲人成小说网站色| 亚洲中文字幕乱码熟女在线| 亚洲日韩精品国产3区| 亚洲综合激情五月丁香六月| 亚洲欧美日韩自偷自拍| 亚洲精品蜜夜内射| 狠狠综合亚洲综合亚洲色| 全亚洲最新黄色特级网站| 亚洲国产中文v高清在线观看| 亚洲精品国产电影| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 中文字幕亚洲不卡在线亚瑟| 久久久久亚洲AV成人网人人网站| 亚洲免费日韩无码系列| 亚洲真人无码永久在线| 亚洲亚洲人成综合网络| 久久九九亚洲精品| 亚洲自偷自拍另类12p| 亚洲精品456在线播放| 亚洲人成网站在线观看播放动漫| 亚洲AV一二三区成人影片| 亚洲男人天堂2022| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲av无码专区在线观看素人| 亚洲精品线路一在线观看| 国产亚洲AV手机在线观看| 亚洲成A人片在线观看无码不卡| 亚洲精品综合一二三区在线| 亚洲同性男gay网站在线观看| 亚洲天堂2017无码中文| 亚洲av永久无码| 亚洲日韩VA无码中文字幕|