起こったこと
My SQLにてSELECT文で、あるカラムの値を取得しようとした際にThe used SELECT statements have a different number of columns
のエラーが発生した。
原因
SELECT文にほしいカラムを追加したが、よく見るとUNIONにて結合を行っており、UNION側のカラム数とSELECT文のカラム数が合わなくなっていた。
UNIONとは
複数の SELECT 文によってデータをそれぞれ取得し、その結果を結合した上で1つのデータとして取得する場合に使う。
LEFT JOINやRIGHT JOIN などの左右結合でなく、縦に結合するためカラム数が一致しないといけない。
例 SELECT id, name, age from uranohoshi UNION SELECT id, name, age from otonokizaka
table:uranohoshi
id | name | age |
---|---|---|
1 | watanabe | 17 |
2 | kunikida | 15 |
3 | matsuura | 18 |
table:otonokizaka
id | name | age |
---|---|---|
1 | takasaka | 17 |
2 | nishikino | 15 |
3 | ayase | 18 |
結合後
id | name | age |
---|---|---|
1 | watanabe | 17 |
2 | kunikida | 15 |
3 | matsuura | 18 |
1 | takasaka | 17 |
2 | nishikino | 15 |
3 | ayase | 18 |
まとめ
The used SELECT statements have a different number of columns
のエラーを見るのは初めてだったが、UNIONで結合を行っている場合以外では起きないエラーっぽい?
このエラーが出た場合はUNION結合をしていないか確認する必要あり。