Maison >base de données >tutoriel mysql >Pourquoi MySQL renvoie-t-il une erreur « Colonne inconnue » lors de l'utilisation de CONCAT dans des requêtes SELECT ?

Pourquoi MySQL renvoie-t-il une erreur « Colonne inconnue » lors de l'utilisation de CONCAT dans des requêtes SELECT ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 17:49:02452parcourir

Why Does MySQL Throw an

Comprendre les conditions CONCAT dans les requêtes MySQL SELECT

Lorsque vous traitez des champs représentant des noms ou d'autres informations concaténées, la fonction CONCAT de MySQL fournit un outil polyvalent pour combiner des valeurs et effectuer des comparaisons. Cependant, l'utilisation de CONCAT dans les requêtes SELECT peut entraîner l'erreur « colonne inconnue » pour l'alias attribué à l'expression concaténée.

Pour surmonter cette erreur, il est important de comprendre que les alias dans les requêtes SELECT ne s'appliquent qu'à l'expression concaténée. colonnes de sortie et ne sont pas reconnus dans la requête elle-même. Par conséquent, pour utiliser une expression CONCAT dans une condition WHERE, vous avez deux options :

  1. Répétez l'expression CONCAT :

    Au lieu d'utiliser le alias, répétez l'expression CONCAT dans le WHERE clause :

    SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
    FROM users
    WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
  2. Encapsuler la requête :

    Vous pouvez également envelopper la requête d'origine dans une sous-requête et attribuer un alias à la Expression CONCAT dans la sous-requête :

    SELECT * FROM (
      SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
      FROM users) base 
    WHERE firstLast = "Bob Michael Jones"

Dans les deux cas, la requête compare avec succès la valeur concaténée des champs prénom et nom avec la chaîne fournie, "Bob Michael Jones", et récupère les résultats souhaités.

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!

Déclaration:
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