2017-10-31 4 views
-1

Ich schreibe eine Abfrage, um das Ergebnis aus einer Tabelle "tbl_meta" mit 3 Spalten als ID, attr_name, attr_value zu erhalten.retrive mehrere Spalten als mehrere Spalten in einer Zeile mysql

Tabellenstruktur wie der 2. Spalte ist der Name des Attributs und 3. Spalte wird der Wert wie unter

ID  attr_name  attr_value 

1  name  abc 

2  address aaa 

3  age  25 

Also, wenn ich „select * from tbl_meta wo ID = 10“ verwenden, ich mag als Folge bekam es ist, wie oben gezeigt, aber ich brauche, wie unten in einer einzigen Zeile mit Spalten ergeben:

col1 col2 col3 col4  col5 col6 

name abc  address aaa  age 25 

wie kann ich diese mit mySQL zu tun?

HINWEIS

Ich habe versucht, gegebenen Lösungen @MySQL - Rows to Columns und MySQL pivot row into dynamic number of columns aber es ist nicht, wie ich erwarte. Als ich wie

versuchte
SELECT 
case when attr_name = 'name' then attr_value end as name , 
case when attr_name = 'address' then attr_value end as address,   
case when attr_name = 'age' then attr_value end as agep, 

FROM tbl_meta 
where ID = 10 

I-Ausgang, wie immer bin:

name  address age 
abc  NULL  NULL 
NULL  aaa  NULL 
NULL  NULL  25 

stattdessen kann ich nicht bekommen wie

name address age 
abc  aaa  25 

aus obiger Tabelle.

+0

Dieser Vorgang wird als Pivotieren bezeichnet und wurde hier so oft auf SO soooo gestellt und beantwortet. In den verknüpften doppelten Themen wird erläutert, wie Sie statische und dynamische Pivot-Tabellen über SQL erstellen. Bitte beachten Sie, dass es viel efzienter ist, eine solche Transformation in der Anwendungslogik im Gegensatz zu mysql durchzuführen. – Shadow

+0

Ich habe es schon einmal versucht, aber da es nicht funktioniert wie erwartet, habe ich eine neue Frage gestellt. – Nil

+0

Die Antwort auf die aktualisierte Frage befindet sich immer noch in der doppelten Frage "MySQL - Zeilen zu Spalten". Dort gibt die meistbeantwortete Antwort eine Schritt-für-Schritt-Beschreibung, wie man diese Transformation liest, bitte lies sie. – Shadow

Antwort

0

Sie können etwas wie verwenden;

SELECT *, (IF ID=10) AS new_column FROM tbl_meta; 
+0

Tut mir leid, aber es funktioniert nicht. – Nil