MySQL で集合差を取得したいのですが、上手くいきません。
mysql Ver 8.0.19
videoテーブルとwordテーブルがあります。
videoテーブル には word_id_1,word_id_2がありこの2つを連結し、wordテーブルのword_idになければword_idに追加したいとおもっています。
tabel: video
word_id_1 | word_id_2 |
---|---|
1 | 2 |
3 | 4 |
5 | 6 |
tabel: word
word_id | |
---|---|
1 | |
2 | |
3 |
完成目標
word_id | |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 |
MySQL
1INSERT INTO word (word_id) 2SELECT cc.word_id_1 3FROM ( 4(SELECT word_id_1 FROM video ) 5UNION 6(SELECT word_id_2 FROM video ) 7) cc 8WHERE NOT EXISTS(SELECT word_id FROM word)
実行結果ではエラーは出ませんが、SELECTの結果も何もでてきません。
MySQL
1(SELECT word_id_1 FROM video ) 2UNION 3(SELECT word_id_2 FROM video )
MySQL
1SELECT word_id FROM word
selectしている場所を見るとそれぞれ結果は出ます。
追記
https://qiita.com/Hiraku/items/71873bf31e503eb1b4e1
参考して下記のようにLEFT JOINにしても、同じくエラーはなく、結果は何も出ませんでした(T . T)
MySQL
1SELECT bv.word_id_1 2FROM video bv 3LEFT JOIN word dw ON dw.word_id = bv.word_id_1 4WHERE bv.word_id_1 IS NULL
追記2
指摘していただき、where NOT EXISTS( を 変更しましたが、結果はやはり0レコードでした(;_;)
MySQL
1SELECT cc.word_id_1 2FROM ( 3(SELECT word_id_1 FROM video ) 4UNION 5(SELECT word_id_2 FROM video ) 6)cc 7WHERE cc.word_id_1 NOT IN(SELECT word_id FROM word)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/16 01:52
2020/06/16 08:58