[前][次][番号順一覧][スレッド一覧]

mysql:16700

From: ds1i-hsmt <ds1i-hsmt <ds1i-hsmt@xxxxxxxxxx>>
Date: Wed, 10 Aug 2022 10:52:03 +0900 (JST)
Subject: [mysql 16700] INSERT SELECT でのテーブル別名の使い方

久光と申します

テーブル名tableAのカラム名id(UNSIGNED INT)の欠番を埋めながらレコードを追加するSQL文として
下記を考えました。

INSERT INTO `tableA` (`id`, ・・・) SELECT IFNULL((`id` + 1), 1) AS `minID`,  ・・・ FROM `tableA` AS t1 WHERE NOT EXISTS (SELECT * FROM `tableA` AS t2 WHERE (t1.id + 1) = t2.id) LIMIT 1

問題なく動作しているようなので一安心しているのですが
INSERT INTO `tableA` AS t0 (t0.id, ・・・)
のように最初のテーブルに別名をつけずに動作しているのが気になっています。
INSERT ....SELECT...だと SELECT内の記述がINSERTに影響しないから問題ないのか
問題あるのにわたしが気づいてない(動作しているようにみえている)のか
どうなんでしょうか。
 

添付ファイル

[前][次][番号順一覧][スレッド一覧]

-> @ 16700 2022-08-10 10:52 [ds1i-hsmt <ds1i-hsmt] INSERT SELECT でのテーブル別名の使い方  
     16701 2022-08-10 11:12 ┗[yoku0825 <yoku0825@x] Re: [mysql 16700] INSERT SELECT でのテーブル別名の使い方