例SQL文が1つのテーブルで別のテーブルを更新することを示します
2597 ワード
前言
SQLでは、あるテーブルのデータを別のテーブルに挿入する場合、SELECT INTOまたはINSERT INTO SELECTが一般的である.しかし、UPDATE SELECTという言葉はありません.だから、あるテーブルに基づいて別のテーブルを更新する必要がある場合はどうすればいいですか?このプロセスを例として説明します.
インスタンスの適用
ある会社の顧客アクセス情報レコードには、ユーザー情報テーブルusersとアクセス記録テーブルvisitがあり、アクセス記録テーブルには、時間と訪問者が記録され、訪問者名と電話情報はusersテーブルから読み出されます.しかし、後で、usersテーブルの顧客電話番号が常に変化していることが分かったので、visitテーブルでusersのデータを利用して当時の電話番号を記録するように変更しました.
サンプルデータテーブル
ユーザー情報テーブルusers
uid
username
phone
1
Tom
13966666666
3
Lucy
13999999999
履歴情報テーブルvisit
vid
uid
time
username
phone
1
1
2019/06/15 19:23:45
2
2
2019/06/18 14:03:59
3
3
2019/06/23 07:45:21
SQL文の更新
結果の更新
履歴情報テーブルvisit
vid
uid
time
username
phone
1
1
2019/06/15 19:23:45
Tom
13966666666
2
2
2019/06/18 14:03:59
3
3
2019/06/23 07:45:21
Lucy
13999999999
に注意
更新時にデータ型が一致していれば、次のように操作できます.
OPStationのためOP_OPName定義の長さはqdas_より大きいconfig.K 0053なので、LEFT切り取りで更新できます.
小結
実際、更新文は基本的にUPDATEとSELECTの統合として理解できる.後の
SQLでは、あるテーブルのデータを別のテーブルに挿入する場合、SELECT INTOまたはINSERT INTO SELECTが一般的である.しかし、UPDATE SELECTという言葉はありません.だから、あるテーブルに基づいて別のテーブルを更新する必要がある場合はどうすればいいですか?このプロセスを例として説明します.
インスタンスの適用
ある会社の顧客アクセス情報レコードには、ユーザー情報テーブルusersとアクセス記録テーブルvisitがあり、アクセス記録テーブルには、時間と訪問者が記録され、訪問者名と電話情報はusersテーブルから読み出されます.しかし、後で、usersテーブルの顧客電話番号が常に変化していることが分かったので、visitテーブルでusersのデータを利用して当時の電話番号を記録するように変更しました.
サンプルデータテーブル
ユーザー情報テーブルusers
uid
username
phone
1
Tom
13966666666
3
Lucy
13999999999
履歴情報テーブルvisit
vid
uid
time
username
phone
1
1
2019/06/15 19:23:45
2
2
2019/06/18 14:03:59
3
3
2019/06/23 07:45:21
SQL文の更新
update visit
set visit.username = users.username, visit.phone = users.phone
from users
where visit.uid = users.uid
結果の更新
履歴情報テーブルvisit
vid
uid
time
username
phone
1
1
2019/06/15 19:23:45
Tom
13966666666
2
2
2019/06/18 14:03:59
3
3
2019/06/23 07:45:21
Lucy
13999999999
に注意
更新時にデータ型が一致していれば、次のように操作できます.
UPDATE qdas_config
SET qdas_config.K0053 = LEFT(OPStation.OP_OPName, 20)
FROM OPStation
WHERE qdas_config.ID = OPStation.OP_ID
OPStationのためOP_OPName定義の長さはqdas_より大きいconfig.K 0053なので、LEFT切り取りで更新できます.
小結
実際、更新文は基本的にUPDATEとSELECTの統合として理解できる.後の
from...where
はSELECT文の構造であるからだ.INNTER/OUTER JOINを使用して、クエリー機能をさらに強化することもできます.