Error Code: 1241. Operand should contain 1 column(s)
このエラーは自分がサブクエリを走らせたときにでてきました。
どういうパターンのときにでてきて、どのように対処すればいいのか紹介していこうと思います。
- オペランドとは
- サブクエリのオペランド
- 対処
オペランドとは
##オペランドとは何か?
オペランド (operand)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
このサイトによると、式を構成する要素、演算子ではなく数字や変数のことというわけです。
直訳すると被演算子という意味になります。
SQLの場合だと、、?
select * from tableA
この*のところです。
オペランドと聞いて僕はオペラント条件づけのことを思い出しましたが、関係なかったです。
operand
とoperant
ですw
operantだと「事象によって変化する行動」みたいな意味になります。全然違います
##サブクエリのオペランドと対処方法
今回のエラーは
select * from tableA where (select * from tableB where columnA = "A") is not null
みたいな感じでサブクエリを書いたときに発生しました。
エラー文によると、「オペランドが一つのカラムを持っている必要がある」ということを行っていますね。
今回の文だとサブクエリのオペランドが*になっていて、複数カラムを指定していますね。
これに対して、「is null」を適用することはできません。tableAの中からカラムをひとつだけえらんで対象に設定できるようにすればいいかと思います。
以上でなおる簡単なエラーでした。
もしこのエラーがでたら、オペランドの意味を確認してselectでとってきているものに問題がないかなどを確認してあげて下さい。
以上です。