主頁(yè) > 知識(shí)庫(kù) > MySQL數(shù)據(jù)庫(kù)同時(shí)查詢更新同一張表的方法

MySQL數(shù)據(jù)庫(kù)同時(shí)查詢更新同一張表的方法

熱門標(biāo)簽:電話機(jī)器人免費(fèi)嗎 400電話申請(qǐng)什么好 百度地圖標(biāo)注地方備注 怎么申請(qǐng)400電話申請(qǐng) 龍圖酒吧地圖標(biāo)注 怎么辦理400電話呢 地圖標(biāo)注圖標(biāo)素材入駐 好搜地圖標(biāo)注 電銷機(jī)器人價(jià)格多少錢一臺(tái)

在平常的項(xiàng)目中,經(jīng)常會(huì)碰到這樣的問題:我需要在一張標(biāo)中同時(shí)更新和查詢出來的數(shù)據(jù)。例如:有如下圖一張表數(shù)據(jù),現(xiàn)在需要更新操作為:把status=1的name值更新為id=2的name值

通常情況下我們會(huì)想到如下語(yǔ)句來實(shí)現(xiàn)這個(gè)需求:

UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1

結(jié)果卻報(bào)錯(cuò),報(bào)錯(cuò)信息為:You can't specify target table 'tb_test' for update in FROM clause,不能在同一語(yǔ)句中update,select同一張表。不能在同一張表操作,換個(gè)思路,如果不是同一張表的話應(yīng)該就是可以的。于是,可以把select出來的結(jié)果當(dāng)成一個(gè)臨時(shí)的中間表,從中間表中獲取想要的更新相關(guān)的數(shù)據(jù)。于是,上面的更新語(yǔ)句可以更改成下面這樣子:

UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1

這樣就可以完成題目中的操作。經(jīng)歷的大致過程為:查詢出id=2的數(shù)據(jù)作為中間表t;set的數(shù)據(jù)從t表中查詢出來;做更新操作這樣就不是在同一語(yǔ)句中update,select同一張表了,因?yàn)檫@相當(dāng)與在操作兩張表,tb_test和中間表t。最后的結(jié)果如下圖:

您可能感興趣的文章:
  • Mysql update多表聯(lián)合更新的方法小結(jié)
  • mysql實(shí)現(xiàn)查詢數(shù)據(jù)并根據(jù)條件更新到另一張表的方法示例
  • 如何使用MySQL一個(gè)表中的字段更新另一個(gè)表中字段
  • Mysql 根據(jù)一個(gè)表數(shù)據(jù)更新另一個(gè)表的某些字段(sql語(yǔ)句)
  • mysql用一個(gè)表更新另一個(gè)表的方法
  • 僅用一句SQL更新整張表的漲跌幅、漲跌率的解決方案

標(biāo)簽:廣西 溫州 固原 內(nèi)江 防疫工作 汕尾 撫順 浙江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL數(shù)據(jù)庫(kù)同時(shí)查詢更新同一張表的方法》,本文關(guān)鍵詞  MySQL,數(shù)據(jù)庫(kù),同時(shí),查詢,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL數(shù)據(jù)庫(kù)同時(shí)查詢更新同一張表的方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL數(shù)據(jù)庫(kù)同時(shí)查詢更新同一張表的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章