Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个表合并php Mysql行_Php_Mysql - Fatal编程技术网

从一个表合并php Mysql行

从一个表合并php Mysql行,php,mysql,Php,Mysql,有没有办法只合并最后一个我在列中有值的个人id 比如说,身份证号码为2的安德森结婚了,他的名字也变了 id p_id last_name job Hobby 1 1 Smith Programmer NULL 2 2 Anderson Influencer Reading 3 2 McKing Influencer NULL 4 3

有没有办法只合并最后一个我在列中有值的个人id 比如说,身份证号码为2的安德森结婚了,他的名字也变了

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  
例如,我得到:

p_id:1-史密斯-程序员-足球
p_id:2-麦金-影响者 -阅读

提前谢谢

更新:

你们真的很严格

我尝试了几个问题,但我无法实现我的目标

从表组中选择*按p\U id排序按id排序ASC


有没有办法只“合并”列中有值的最后一个个人id?是的……你是如何做到这一点的?阅读非常好的解决方案。它的工作非常好-谢谢你@沙什尚卡提亚
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
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