Maison > base de données > tutoriel mysql > Comment résoudre l'erreur MySQL La sous-requête renvoie plus d'une ligne

Comment résoudre l'erreur MySQL La sous-requête renvoie plus d'une ligne

PHPz
Libérer: 2023-05-27 18:49:13
avant
10477 Les gens l'ont consulté

    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.

    L'erreur est signalée comme suit

    Comment résoudre lerreur MySQL La sous-requête renvoie plus dune ligne

    Solution

    Prenez cette instruction SQL comme exemple

    select * from table1 where table1.colums=(select columns from table2);
    Copier après la connexion

    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);
    Copier après la connexion

    3) Ajoutez le mot-clé any avant la sous-requête

    select * from table1 where table1.colums=any(select columns from table2);
    Copier après la connexion

    Code d'erreur : 1242 La sous-requête renvoie plus d'une ligne

    Description de l'erreur

    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

    Raison de l'erreur

    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
    Copier après la connexion

    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

    Solution

    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
    Copier après la connexion

    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!

    Étiquettes associées:
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Derniers numéros
    MySQL arrête le processus
    Depuis 1970-01-01 08:00:00
    0
    0
    0
    Env中mysql
    Depuis 1970-01-01 08:00:00
    0
    0
    0
    Erreur lors de l'installation de MySQL sous Linux
    Depuis 1970-01-01 08:00:00
    0
    0
    0
    php - problème de surveillance MySQL
    Depuis 1970-01-01 08:00:00
    0
    0
    0
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal