programing

MySQL 오류 1241: 오퍼랜드에 1개의 열이 포함되어 있어야 합니다.

newsource 2022. 9. 19. 23:43

MySQL 오류 1241: 오퍼랜드에 1개의 열이 포함되어 있어야 합니다.

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)

표 2에는 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 컬럼이 네스트된 select 문에 의해 반환된 결과에서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
             )

이 쿼리가 구문 분석되었을 뿐만 아니라 예상된 결과를 반환한 저장 프로시저입니다.

언급URL : https://stackoverflow.com/questions/15820288/mysql-error-1241-operand-should-contain-1-columns