私は2つのテーブルを持っています。そのうちの1つは 'user_flag'で、もう1つは 'playlist_data'です。別のテーブルから挿入して新しい値を挿入してください
'user_flag'のすべての 'object_id'列エントリを 'playlist_data'の 'object_id'列に配置したいが、それらのエントリが 'user'エントリとして '3'を持つ場合のみ、彼らはすでに存在していない(重複する 'object_id's!)はありません。
私はそれを行う方法を学習しようとしましたが、これは私が見つけたものです:
INSERT INTO playlist_data (object_id)
SELECT object_id FROM user_flag
WHERE user='3';
ON DUPLICATE KEY UPDATE object_id=object_id
が、この作品は、適切ウィル?
しかし、私はまた、同時に複数の操作を行いますしようとしている、と私は答えを見つけるように見えることはできません。
1)私もこれで新しいデータを挿入します。私は、新しく挿入されたすべてのエントリに、 'playlist_data'の 'filetype'カラムに '5'を含めるようにします。
は、このすべての真ん中に私はちょうど
INSERT INTO playlist_data (filtype)
VALUES (5)
ていますか?
2)両方のテーブルにも 'id'カラムがあります。最新の 'id'の 'playlist_data'から自動的に新しいIDが生成されますか?
たとえば、 'user_flag'から 'id'が '150'のエントリを転送していますが、 'playlist_data'の最高の 'id'は '63' 64 '、または何とかそれを定義する必要がありますか?
それはうまくいかなかった理由を説明しています。私はセミコロンを正しく配置しませんでした。私は今理解し始めています。それはすべて1つの文です。レイアウトを改善するために複数の行に分かれています。しかし、 'user_flag'に 'filetype'カラムがないことを忘れてしまった。新しい値を完全に挿入したいだけで、 'user_flag'から転送するのではない。 – Potatoman
コーセのこのコードは値5を挿入します。 –
@Potatoman 'SELECT'クエリを単独で読むと、' user_flag'から 'filtype'にアクセスしようとしていないことがわかります。その列でリテラル「5」を選択するだけです。 – Barmar