Table1からtable2にデータを挿入しようとしています
insert into table2(Name,Subject,student_id,result)
select (Name,Subject,student_id,result)
from table1;
Table2のキーはstudent_idです。
重複がないと仮定します。
エラーが表示されます:MySQL error 1241: Operand should contain 1 column(s)
Table2には4列しかありません。
構文エラー。select
から( )
を削除してください。
insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
SELECTステートメントの(
と)
を削除するだけです:
insert into table2 (Name, Subject, student_id, result)
select Name, Subject, student_id, result
from table1;
パーサーに同じ例外を発生させる別の方法は、次の誤った句です。
SELECT r.name
FROM roles r
WHERE id IN ( SELECT role_id ,
system_user_id
FROM role_members m
WHERE r.id = m.role_id
AND m.system_user_id = intIdSystemUser
)
SELECT
句のネストされたIN
ステートメントは2つの列を返します。パーサーはオペランドとして認識しますが、技術的には正しいです。id列が返す結果の1つの列(role_id)リストを返すことが期待されるネストされた選択ステートメント。
完全を期すために、正しい構文は次のとおりです。
SELECT r.name
FROM roles r
WHERE id IN ( SELECT role_id
FROM role_members m
WHERE r.id = m.role_id
AND m.system_user_id = intIdSystemUser
)
このクエリが解析されるだけでなく、期待される結果を返す部分であるストアドプロシージャ。