国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL跨表查詢與跨表更新

2024-07-24 12:54:26
字體:
來源:轉載
供稿:網友

有點 SQL 基礎的朋友肯定聽過 「跨表查詢」,那啥是跨表更新???

背景

項目新導入了一批人員數據,這些人的有的部門名稱發生了變化,有的聯系方式發生了變化,暫且稱該表為

t_dept_members, 系統中有另外一張表 t_user_info 記錄了人員信息。要求將 t_dept_members 中有變化的信息更新到 t_user 表中,這個需求就是「跨表更新」啦

憨B SQL 直接被秒殺

不帶腦子出門的就寫出了下面的 SQL

看到身后 DBA 小段總在修仙,想著讓他幫潤色一下😜,于是發給了他,然后甩手回來就是這個樣子:

看到這個 SQL 語句我都驚呆了,還能這樣寫,在無情的嘲笑下,一聲 KO 我直接倒下。死也得死的明白,咱得查查這是咋回事啊

Mysql Update Join

我們經常使用 join 查詢表中具有(在 INNER JOIN 情況下)或可能沒有(在 LEFT JOIN 情況下)另一個表中匹配行的表中的行。

同樣,在 MySQL 中, 我們也可以在 UPDATE 語句中使用 JOIN 子句執行跨表更新,語法就是這樣:

UPDATE T1, T2,[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1SET T1.C2 = T2.C2,  T2.C3 = exprWHERE condition

我們還是詳細的說明一下上面的語法:

首先,在 UPDATE 子句之后,指定主表(T1)和希望主表聯接到的表(T2)。請注意,必須在UPDATE 子句之后至少指定一個表接下來,指定你要使用的聯接類型,即 INNER JOIN 或 LEFT JOIN 以及聯接謂詞。 JOIN子句必須出現在 UPDATE 子句之后(這個大家都是知道的哈)然后,將新值分配給要更新的 T1或 T2 表中的列最后,在 WHERE 子句中指定一個條件以將行限制為要更新的行

如果你遵循 update 語法,你會發現有另外一種語法也可以完成跨表更新

UPDATE T1, T2SET T1.c2 = T2.c2,   T2.c3 = exprWHERE T1.c1 = T2.c1 AND condition

上面的語法其實隱式使用了 inner join 關鍵字,完全等同于下面的樣子:

UPDATE T1,T2INNER JOIN T2 ON T1.C1 = T2.C1SET T1.C2 = T2.C2,   T2.C3 = exprWHERE condition

個人建議還是加上 inner join 關鍵字吧,這樣可讀性更好,盡享絲滑,你覺得呢?

我摸魚看到的,覺得是靈魂翻譯

談太廉,秀你碼 (Talk is cheap,show me the code)

Update Join 例子

年底了,又到了評績效的時候了,就是那個叫 KPI 的東東(你們有嗎),聽說要根據 KPI 調工資了。有兩張表

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双柏县| 濮阳市| 易门县| 册亨县| 临泉县| 永吉县| 北流市| 南投县| 姚安县| 资阳市| 即墨市| 新丰县| 喜德县| 洪江市| 临清市| 崇仁县| 于都县| 桂阳县| 鞍山市| 沙湾县| 松滋市| 昌江| 河南省| 台前县| 大悟县| 清水县| 呼玛县| 东明县| 吉首市| 岳阳市| 兴海县| 深泽县| 紫云| 府谷县| 黔西| 年辖:市辖区| 山丹县| 永福县| 舟山市| 呈贡县| 阆中市|