update columns mysql select condition where concat

mysql - columns - select concat oracle



MySQL selecciona con condiciĆ³n CONCAT (6)

Estoy tratando de compilar esto en mi mente ... tengo una tabla con los campos firstname y lastname y tengo una cadena como "Bob Jones" o "Bob Michael Jones" y muchos otros.

el caso es que tengo, por ejemplo, Bob en el nombre y Michael Jones en el apellido

así que estoy tratando de

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

pero dice la columna desconocida "firstlast" ... ¿alguien puede ayudarme por favor?


Existe una alternativa para repetir la expresión CONCAT o usar subconsultas. Puede hacer uso de la cláusula HAVING , que reconoce alias de columna.

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

Aquí hay un SQL Fiddle en funcionamiento .


Los alias que das son para el resultado de la consulta; no están disponibles dentro de la consulta en sí.

Puedes repetir la expresión:

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

o envuelva la consulta

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


Prueba esto:

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


Tratar:

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

Su alias firstlast no está disponible en la cláusula where de la consulta a menos que haga la consulta como una selección secundaria.


Use CONCAT_WS ().

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

El primer argumento es el separador para el resto de los argumentos.


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