同一張表兩方各欄位相同 SQL高階知識 派生表

2021-10-11 15:51:06 字數 793 閱讀 5783

派生表的定義

派生表是在外部查詢的from子句中定義的,只要外部查詢一結束,派生表也就不存在了。

派生表的作用

派生表可以簡化查詢,避免使用臨時表。相比手動生成臨時表效能更優越。派生表與其他表一樣出現在查詢的from子句中。

例如:

select
其中cus就是派生表

派生表的特徵

注意:派生表是一張虛表,在資料庫中並不存在,是我們自己建立的,目的主要是為了縮小資料的查詢範圍,提高查詢效率。

派生表巢狀

如果需要用乙個本身就引用了某個派生表的查詢,去定義另乙個派生表,最終得到的就是巢狀派生表。

例子:查詢每年處理客戶數超過70的訂單年度和每年所處理的客戶數量。

方法一:不使用派生表

select
方法二:使用派生表

select
巢狀查詢看起來非常複雜,巢狀查詢也是很容易產生問題的乙個方面。在這個例子中,使用巢狀派生表的目的是為了重用列別名。但是,由於巢狀增加了**的複雜性,所以對於本例考慮使用方案一。

批註

派生表在我們日常查詢中經常使用到,用法也比較靈活,主要是執行效率會相對較高,因為它可以提前縮小查詢範圍。但是也不可亂用,特別是在不需要使用派生表而強制使用,效果反而會適得其反。

更新同一張表的整列字段

先需要先把需要更新的整列結果查詢出來。這裡記錄下mysql時間的函式 date format 欄位名,y m d h i s 第二個引數是要轉換的格式,因為我本來的格式中有毫秒。以下是舉例 轉換的sql select id as dd,date format created,y m d h i s ...

sql 插入一張表的部分字段需要查詢另一張表

insert into 表a 欄位a,欄位b,欄位c select 欄位a 欄位b 欄位c from 表bwhere 條件insert into 表a 欄位a,欄位b,欄位c,欄位d select 欄位a 要插入的值 例 inserttest 不為在表b查詢到的值 用 包起來表示字串,方法,數值不用...

Mysql中更新同一張表的兩個字段,發生併發

innodb lock wait timeout指的是事務等待獲取資源等待的最長時間,超過這個時間還未分配到資源則會返回應用失敗 當鎖等待超過設定時間的時候,就會報如下的錯誤 error 1205 hy000 lock wait timeout exceeded try restarting tra...