112 votes

MySQL select avec CONCAT condition

Je suis en train de compiler ce dans mon esprit.. j'ai une table avec les champs prénom et nom et j'ai une chaîne comme "Bob Jones" ou "Bob Michael Jones" et plusieurs autres.

la chose est, j'ai par exemple Bob, le prénom, et Michael Jones dans lastname

donc, je suis en train de

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

mais il est dit inconnu colonne "firstlast".. quelqu'un peut-il aider s'il vous plaît ?

175voto

mdma Points 33973

Les alias vous donnent sont pour la sortie de la requête - ils ne sont pas disponibles dans la requête elle-même.

Vous pouvez répéter l'expression:

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

ou enveloppez la requête

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

34voto

Chandu Points 40028

Essayez ceci:

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

10voto

Jeff Swensen Points 2423
SELECT needefield, CONCAT(firstname, ' ',lastname) as firstlast 
FROM users 
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"

7voto

RC. Points 15804

Essayez:

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

Votre alias firstlast n'est pas disponible dans la clause where de la requête, à moins que vous ne la requête comme une sous-sélection.

7voto

Bogdan Points 2678

Il y a une alternative à répéter l' CONCAT de l'expression ou à l'aide de sous-requêtes. Vous pouvez faire usage de l' HAVING clause, qui reconnaît les alias de colonne.

SELECT 
  neededfield, CONCAT(firstname, ' ', lastname) AS firstlast 
FROM
  users 
HAVING firstlast = "Bob Michael Jones"

Ici, c'est un travail SQL Violon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X