unir una tablas sola optimizar obtener nombre lentas inner consultas concatenar columnas mysql sql database database-table

una - unir dos columnas mysql



¿Cómo reunir dos columnas en una con el nombre de columna existente en mysql? (5)

Quiero concatenar dos columnas en una tabla con un nombre de columna existente usando mysql.

Un ejemplo: estoy teniendo una columna FIRSTNAME y LASTNAME y muchas columnas también. Quiero concatenar estas dos columnas solo con el nombre de FIRSTNAME .

Así lo intenté así:

SELECT *, CONCAT(FIRSTNAME, '','', LASTNAME) AS FIRSTNAME FROM `customer`;

pero muestra los dos campos con el nombre de FIRSTNAME . un campo tiene valores normales y otro tiene valores concatenados. Quiero solo una columna con esos valores concatenados. Puedo seleccionar columnas individuales, pero tengo más de 40 columnas en mi tabla.

¿Hay alguna forma de eliminar la columna original usando mysql?


Como Aziz-shaikh ha señalado, no hay manera de suprimir una columna individual de la directiva * , sin embargo, es posible que pueda usar el siguiente truco:

SELECT CONCAT(c.FIRSTNAME, '','', c.LASTNAME) AS FIRSTNAME, c.* FROM `customer` c;

Al hacer esto, la segunda aparición de la columna FIRSTNAME adoptará el alias FIRSTNAME_1 por lo que debería poder abordar de forma segura su columna FIRSTNAME personalizada. Debe asignar un alias a la tabla porque * en cualquier posición que no sea al inicio fallará si no tiene un alias.

¡Espero que ayude!


Elimine el * de su consulta y use nombres de columna individuales, como este:

SELECT SOME_OTHER_COLUMN, CONCAT(FIRSTNAME, '','', LASTNAME) AS FIRSTNAME FROM `customer`;

Usando * significa, en sus resultados desea que todas las columnas de la tabla. En su caso * también incluirá FIRSTNAME . Entonces estás concatenando algunas columnas y usando el alias de FIRSTNAME . Esto crea 2 columnas con el mismo nombre.


En lugar de obtener todas las columnas de la tabla usando * en su declaración de SQL, se usa para especificar las columnas de la tabla que necesita.

Puedes usar la sentencia SQL algo como:

SELECT CONCAT(FIRSTNAME, '' '', LASTNAME) AS FIRSTNAME FROM customer;

Por cierto, ¿por qué no podrías usar FullName en lugar de FirstName? Me gusta esto:

SELECT CONCAT(FIRSTNAME, '' '', LASTNAME) AS ''CUSTOMER NAME'' FROM customer;


Puedes probar esta manera simple de combinar columnas:

select some_other_column,first_name || '' '' || last_name AS First_name from customer;


Soy un novato y lo hice de esta manera:

Create table Name1 ( F_Name varchar(20), L_Name varchar(20), Age INTEGER ) Insert into Name1 Values (''Tom'', ''Bombadil'', 32), (''Danny'', ''Fartman'', 43), (''Stephine'', ''Belchlord'', 33), (''Corry'', ''Smallpants'', 95) Go Update Name1 Set F_Name = CONCAT(F_Name, '' '', L_Name) Go Alter Table Name1 Drop column L_Name Go Update Table_Name Set F_Name