Mysql update多表聯合更新的方法小結

2021-01-11 網易

2021-01-10 11:06:34 來源: 西崑雲

舉報

  
下面我建兩個表,並執行一系列sql語句,仔細觀察sql執行後表中數據的變化,很容易就能理解多表聯合更新的用法

  student表 class表

  

  1. 執行 update student s , class c set s.class_name='test00',c.stu_name='test00' where s.class_id = c.id

  student表 class表

  

  2. 執行 update student s join class c on s.class_id = c.id set s.class_name='test11',c.stu_name='test11'

  student表 class表

  

  3. 執行 update student s left join class c on s.class_id = c.id set s.class_name='test22',c.stu_name='test22'

  student表 class表

  

  4. 執行 update student s right join class c on s.class_id = c.id set s.class_name='test33',c.stu_name='test33'

  student表 class表

  

  5. 執行 update student s join class c on s.class_id = c.id set s.class_name=c.name , c.stu_name=s.name

  student表 class表

  

  知識點補充:

  mysql多表關聯update

  日常的開發中一般都是寫的單表update語句,很少寫多表關聯的update。

  不同於sql server,在mysql中,update的多表連接更新和select的多表連接查詢在使用的方法上存在一些小差異。

  來看一個具體的例子。

  update orders o

   left join users u

   on o.userid = u.id

  set o.username = u.name;

  在上面的例子中,update關鍵字後跟的是一個多表關聯的結果集,mysql直接將這個多表關聯的結果集看做一個單表,再在這個單表的基礎上做常規的update操作。

  和sql server的細小差別在於,sql server的set子句跟在要更新的具體表之後,mysql的set語句則是跟在要更新的結果集之後(要更新的具體表在set語句中設置)。

  總結

  到此這篇關於mysql update多表聯合更新的方法小結的文章就介紹到這了

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • MySQL發生全表更新後如何快速恢復數據
    這種方法同樣還是基於mysql的binlog和sed命令可以提取出當時執行全表更新的sql,然後對update的sql語句進行逆向操作,將更新後的數據再更新回之前的數據。下面我們就通過一個例子來研究下,這種方法如何到達快速恢復數據的目的。同時把恢復數據的過程記錄下來,方便以後遇到類似問題可以查閱參考,快速解決問題,提高工作效率。
  • IT大叔詳談mysql中update語句和delete語句及應用
    今天老韓來講一講mysql中的update語句和delete語句。一、update(更新)語句;update語句屬於DML語句,如果要更新資料庫中的數據時可以使用它。update根據更新範圍老韓分為兩種(老韓自己分的類,方便講解)。
  • MySQL中如何創建、查看、刪除、修改表記錄
    昨天跟大家分享了如何創建資料庫,今天我們一起學習一下,如何創建表,以及表創建好之後,如何添加、刪除、修改表裡面的信息。首先跟昨天一樣,我們是先進入mysql,創建一個資料庫oaec,具體方法可以看我昨天的那篇文章,現在直接進入我們的正題。先查看一下我們建好的資料庫,輸入命令:show databases;
  • mysql修改密碼的方法及權限的認知
    例:mysqladmin -utest -p123456 password abc1232、直接登陸MySQLset password for 用戶名@localhost = password('新密碼');例:set password for root@localhost = password('abc123');3、用update
  • mysql修改語句UPDATE的使用
    今天介紹一下update的使用,這個關鍵詞就是修改資料庫語句。我們看看在哪些環境會用到修改語句,比如在編輯輸入資料的時候發現資料錄錯了,或者某個信息要修改,這個時候就需要用到update了。我們實現的是最後原理,不管是asp,jsp還是php實現最底層都是通過sql語句修改資料庫,實現達到的效果。通過程序篩選出數據,在指定去執行。
  • MySQL資料庫中壓縮表性能監測-愛可生
    總的來說壓縮表適合於讀密集、只讀、或者極少量更新的業務場景。二、壓縮表監測對壓縮表的監控,保存在 Information_schema 內以 INNODB_CMP 開頭的字典表。通過這些表可以監控到壓縮表是否健康,是否需要調整壓縮頁,或者說是否適合用壓縮表等。
  • MySQL死鎖產生原因和解決方法
    起初業務程序思路是這樣的:投資人投資後,將金額隨機分為幾份,然後隨機從借款人表裡面選幾個,然後通過一條條select for update 去更新借款人表裡面的餘額等。例如兩個用戶同時投資,A用戶金額隨機分為2份,分給借款人1,2B用戶金額隨機分為2份,分給借款人2,1由於加鎖的順序不一樣,死鎖當然很快就出現了。
  • 「MySql學習」MySql學習系列之用戶與權限管理
    :root , 給root 用戶設置密碼的方法有:A) mysqladmin -uroot -p dir13652 password 『newpassword』;B) update user set password=password(』newpassword』) where user=』root』;3、增加新用戶
  • mysql資料庫(庫操作和表操作)常用基本命令匯總
    desc name ;顯示錶的詳細數據select database;查看當前使用的資料庫create database mysql;創建一個資料庫mysql表:create table <表名>
  • 如何在MySQL8.0創建資料庫和表並對表記錄進行增刪改查
    1、進入到Ubuntu20.04作業系統,打開終端窗口,輸入命令mysql -u root -p然後輸入資料庫密碼,按回車鍵進入資料庫mysql -u root -p2、查看MySQL資料庫已有哪些資料庫,使用命令
  • 給商戶多付款,元兇竟然是Mysql資料庫隱式轉換
    前段時間,生產商付款應用發生了特別大的故障,多給商戶付款,於是就各種定位,查看各種日誌,並且將最近一段時間的mysql的binlogs日誌都解析了,將所有涉及付款表和商戶所有的付款交易sql都提取出來,在這裡用的binlog2sql工具提取的sql語句,binlog2sql工具的使用,這裡就不做介紹了。
  • mysql 矩陣類型專題及常見問題 - CSDN
    主鍵:主鍵是唯一的,可以由一列或者多列構成關鍵字。外鍵:外鍵是用於關聯兩個表。您可以使用多列來定義主鍵,列間以逗號分隔。ENGINE 設置存儲引擎,CHARSET 設置編碼。update 表名 set 列名1=值1,列名2=值2 [where 條件]
  • SQL語句詳解:MySQL update的正確用法
    【IT168 技術】以下的文章主要介紹的是MySQL update 語句的實際用法,我們首先是以單表的UPDATE語句來引出實現MySQL update 語句的實際方案,以下就是文章的詳細內容描述,望你看完之後會有收穫。
  • mysql常用命令手冊
    > delete from MyClass where id=1; 7、修改表中數據:update 表名 set 欄位=新值,…where 條件 mysql> update MyClass set name
  • 一篇文章搞定MySQL資料庫的庫操作
    to &39;@&39; -- 授權revoke 權限 on 資料庫.表 from &39;@&39; -- 取消權限創建用戶授權例子39;sse&39;localhost&39;123456&授權方式一:為sse授權 db1資料庫下的所有表的 查詢.更新.修改權限grant select
  • Mysql創建用戶和權限管理
    MySQL是一個多用戶的資料庫,最高權限管理者是root用戶,它擁有著最高的權限操作。包括select、update、delete、update、grant等操作。如果有其他用戶想使用MySQL,那麼一般情況在公司之後DBA工程師會創建一個用戶和密碼,讓你去連接資料庫的操作,並給當前的用戶設置某個操作的權限(或者所有權限)。
  • 《MySQL 入門教程》第 24 篇 DML 語句之更新數據
    例如,以下更新語句違反了外鍵約束:mysql> UPDATE IGNORE employee -> SET dept_id = 10 -> WHERE emp_id = 1;ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
  • MySQL數據操作(DML)語句,入門掌握這些足夠了
    DML是(Data Manipulation Languages)數據定義語言的縮寫主要包括表記錄的插入insert、更新update、刪除select插入記錄insert into table(field1,field2,...fieldn) values(value1,value2,...value)如:向表 emp 中插入以下記錄
  • mysql怎麼處理大表在不停機的情況下增加欄位
    創建一張2kw記錄的表,快速創建的方法可以快速創建連續數本次對存儲過程稍作修改,多添加幾個欄位,存儲過程如下:DELIMITER $$CREATE  PROCEDURE `sp_createNum`(cnt INT )BEGIN    DECLARE i INT  DEFAULT 1;DROP TABLE  if existstb_add_columns
  • 資料庫雜記 | MySQL 觸發器
    觸發器在滿足定義條件時觸發,並執行觸發器中定義的語句集合,這使得我們可以利用觸發器做一些有用的事情,比如在新增、更新記錄時記錄操作的時間來個簡單示例,先創建一個表:mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));再創建觸發器:mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account