Maison > Article > base de données > Comment résoudre l'erreur MySQL La sous-requête renvoie plus d'une ligne
Erreur mysql : SQLSTATE[21000] : violation de cardinalité : 1242 La sous-requête renvoie plus d'une ligne
L'erreur signifie que le résultat de la sous-requête comporte plusieurs lignes.
Prenez cette instruction SQL comme exemple
select * from table1 where table1.colums=(select columns from table2);
1) Si elle est écrite à plusieurs reprises, supprimez les données en double. Lors de l'écriture de données, vous pouvez utiliser un jugement logique (PHP) ou des clés étrangères (MySQL) pour empêcher l'écriture répétée de données.
(Ce que j'ai rencontré dans le développement réel était une situation d'écriture répétée de données. J'ai trouvé deux données identiques dans la base de données, qui ne répondaient pas aux exigences commerciales d'origine)
2) Ajoutez la limite 1 à l'instruction conditionnelle de la sous-requête, trouvez-en simplement un qui remplit les conditions
select * from table1 where table1.colums=(select columns from table2 limit 1);
3) Ajoutez le mot-clé any avant la sous-requête
select * from table1 where table1.colums=any(select columns from table2);
1 requêtes exécutées, 0 succès, 1 erreur, 0 avertissements
Requête : SELECT t.id, DATE_FORMAT( t.statisTime, '%Y-%m-%d %H:%i:%s' ) statisTime, (SELECT `id` FROM t_truck_info WHERE id = t.plateId ...
Code d'erreur : 1242La sous-requête renvoie plus d'une ligne
Temps d'exécution : 0,009 sec Temps de transmission : 0,002 sec Temps total : 0,012 sec
Lors de l'écriture des instructions SQL de requête, l'un des champs est obtenu à partir d'une autre table
select t.id,(select num from t_user_info where id = stuNo) as amount from t_stu_info t left join t_user_info t0 on t0.id = t.stuNo
La requête montre que num est constitué de plusieurs éléments de données, tandis que le résultat de la requête externe nécessite que num soit un seul élément de données
select t.id,(select sum(num) from t_user_info where id = stuNo) as amount from t_stu_info t left join t_user_info t0 on t0.id = t.stuNo
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!