J'essaie d'insérer des données d'une table1 dans une table2
insert into table2(Name,Subject,student_id,result)
select (Name,Subject,student_id,result)
from table1;
La clé pour la table2 est student_id.
Supposons qu'il n'y ait pas de doublons.
J'ai l'erreur: MySQL error 1241: Operand should contain 1 column(s)
Il n'y a que quatre colonnes dans la table2.
Erreur de syntaxe, supprimez le ( )
de select
.
insert into table2 (name, subject, student_id, result)
select name, subject, student_id, result
from table1;
Retirez simplement le (
et le )
sur votre instruction SELECT:
insert into table2 (Name, Subject, student_id, result)
select Name, Subject, student_id, result
from table1;
Une autre façon de faire en sorte que l'analyseur soulève la même exception est la clause incorrecte suivante.
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
)
L'instruction imbriquée SELECT
dans la clause IN
renvoie deux colonnes, que l'analyseur considère comme des opérandes, ce qui est techniquement correct, car la colonne id correspond aux valeurs d'une seule colonne (role_id) dans le résultat. retourné par l'instruction select imbriquée, qui devrait renvoyer une liste.
Par souci d’exhaustivité, la syntaxe correcte est la suivante.
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
)
La procédure stockée dont cette requête est une partie non seulement analysée, mais a renvoyé le résultat attendu.