2017-11-09 4 views
1

Gibt es eine Möglichkeit zu Merge nur die letzte personal_id wo habe ich Werte in den Spalten?
Lässt sagen Anderson mit der p_id 2 heiraten und sein Name ändert sich.php Mysql Zeilen von einer Tabelle verschmelzen

id p_id  last_name job   Hobby 
1 1   Smith  Programmer NULL 
2 2   Anderson Influencer Reading 
3 2   McKing  Influencer NULL 
4 3   Jordan  Mother  Cooking 
5 1   Smith  NULL  Soccer 

Zum Beispiel, die ich erhalten:

p_id: 1 - Smith - Programmer - Fußball
p_id: 2 - McKing - Influencer -

Vielen Dank im Voraus lesen.

Update:

Sie sind wirklich streng.

Ich habe ein paar Abfragen versucht, aber ich kann mein Ziel nicht erreichen.

SELECT * FROM Tabelle GROUP_BY p_id ORDER_BY id ASC

+1

_Ist es, einen Weg zu "verschmelzen" nur die letzten personal_id, wo ich Werte in den Spalten haben? _ Ja .. Was hast du versucht, das zu erreichen? –

+0

Gelesen [Wie man eine gute Frage auf Stapel-Überlauf stellt] (https://stackoverflow.com/help/how-to-ask) – cmprogram

Antwort

1
CREATE TABLE QUEST (
    id  INT NOT NULL, 
    p_id  INT NOT NULL, 
    last_name VARCHAR(50) NOT NULL, 
    job  VARCHAR(50), 
    hobby  VARCHAR(50)); 

INSERT INTO quest VALUES (1,1,'Smith','Programmer',NULL); 
INSERT INTO quest VALUES (2,2,'Anderson','Influencer','Reading'); 
INSERT INTO quest VALUES (3,2,'McKing','Influencer', NULL); 
INSERT INTO quest VALUES (4,3,'Jordan','Mother','Cooking'); 
INSERT INTO quest VALUES (5,1,'Smith',NULL,'Soccer'); 
INSERT INTO quest VALUES (6,3,'Jordan','Mother','Cooking'); 
INSERT INTO quest VALUES (7,4,'John',NULL,NULL); 
INSERT INTO quest VALUES (8,5,'Mike','Test',NULL); 
INSERT INTO quest VALUES (9,5,'Mick','Tester',NULL); 
COMMIT; 


SELECT q.p_id, 
    q.last_name, 
    (SELECT job FROM Quest WHERE job IS NOT NULL AND p_id = q.p_id ORDER BY id DESC LIMIT 1) job, 
    (SELECT hobby FROM Quest WHERE hobby IS NOT NULL AND p_id = q.p_id ORDER BY id DESC LIMIT 1) hobby 
FROM Quest q 
WHERE id IN (SELECT MAX(id) FROM Quest GROUP BY P_Id) 
ORDER BY p_id; 


Result: 
p_id - last_name - job - hobby 
1 - Smith - Programmer - Soccer 
2 - McKing - Influencer - Reading 
3 - Jordan - Mother - Cooking 
4 - John - NULL - NULL 
5 - Mick - Tester - NULL 
+0

Wirklich nette Lösungen. Und es funktioniert ziemlich gut - Danke! @ShashshankKatiyar –

1
SELECT t.last_name, t.job, t.hobby 
FROM {THE_TABLE) as t 
JOIN {THE_TABLE} as t2 on t2.p_id = t.p_id 
WHERE t.job is not null 
AND t.hobby is not null 
Verwandte Themen