MYSQLの既存のテーブルの特定の列を2つの列に分割し、戻ってきた2つの列を取得して、既存のテーブルに挿入しようとしています。
私は数日前にMYSQLの学習を始めたばかりですが、それが初心者の質問である場合は申し訳ありません。
これが私がこれまでに試したことです:
MYSQLコードが始まります:
SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address
MYSQLコードの終わり:
これにより、この「12345-990001」のようなデータフィールドが2つの列に分割されました。1つはZIPとして、もう1つは追加データとして使用されます。問題は、これの戻り値を自分が持っている別のテーブルに追加できないことです。これが私が今使っている構文です(しかしそれは機能していません):
MYSQLコードが始まります:
INSERT INTO TABLE Location
(SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address) where ZIP is varchar(64), AND Extended_info is varchar(64)
MYSQLコードの終わり:
よろしくお願いします、よろしくお願いします!
常にinsert
。を含む列リストを使用する必要があります。問題は、クエリが次のように解釈されていることです。
insert into location(select . . .)
そしてselect
、有効な列ではありません。また、単語table
は必要ありません。だからこれを試してみてください:
INSERT INTO Location(zip, extended_info)
SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address;
注:列名は何であるかを推測しています。
編集:
デフォルト値がなく、NULLを受け入れることができないすべての列に値を挿入する必要があります。私はそれzip_code
があなたが入力したいフィールドだと思いますzip
:
INSERT INTO Location(zip_code, extended_info)
SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address;
おそらくあなたはこのようなものが欲しいでしょう:
INSERT INTO Location(zip_code, zip, extended_info)
SELECT '' as zip_code,
substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加