Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

219
Visualizações
¿Es posible usar claves como columnas y valores como valores para una estructura de base de datos clave/valor?

Necesito consultar algunos datos de una tabla de valores clave de MySQL, pero quiero obtener una tabla "normal" como resultado con claves especificadas como columnas.

Ejemplo de mi tabla USERS :

 ID, user_id, key, value ---------------------------------- 1 1 first_name Peter 2 1 last_name Sputnick 3 2 first_name Jan 4 2 last_name Putgraver 5 2 country Netherlands

Quiero esto como resultado de la consulta:

 ID, first_name, last_name ---------------------------- 1 Peter Sputnick 2 Jan Putgraaf

¿Hay una manera buena y eficiente de lograr esto? Tenga en cuenta que no quiero incluir la columna del país en mi resultado.

Necesito esto porque necesito unir estos datos con datos de otra tabla y no quiero usar una consulta secundaria para cada campo que necesito. Así que no quiero hacer algo como esto:

 SELECT *, (SELECT value FROM users WHERE user_id = o.user_id AND key = first_name), (SELECT value FROM users WHERE user_id = o.user_id AND key = last_name), FROM orders o
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede utilizar la agregación condicional:

 select id, max(case when key = 'fist_name' then value end) first_name, max(case when key = 'last_name' then value end) last_name from users group by id
over 4 years ago · Santiago Trujillo Relatório

0

para esto debes usar agregación condicional,

 CREATE TABLE USERS ( `ID` VARCHAR(6), `user_id` VARCHAR(9), `key` VARCHAR(10), `value` VARCHAR(11) );
 INSERT INTO USERS (`ID`, `user_id`, `key`, `value`) VALUES ('1', '1', 'first_name', 'Peter'), ('2' , '1', 'last_name', 'Sputnick'), ('3', '2', 'first_name', 'Jan'), ('4', '2', 'last_name', 'Putgraver'), ('5', '2', 'country', 'Netherlands');
 SELECT user_id , MAX(IF(`key` ='first_name',`value`,NULL )) fisrt_name , MAX(IF(`key` ='last_name',`value`,NULL )) last_name FROM USERS GROUP BY user_id;
id_usuario | primer_nombre | apellido
:------ | :--------- | :--------
1 | Pedro | Sputnick 
2 | ene | putgraver

db<>violín aquí

Si desea todas las claves, debe usar una tabla dinámica

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda