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"