首页 > 试题广场 >

找到每个人的任务

[编程题]找到每个人的任务
  • 热度指数:103906 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个person表,主键是id,如下:
id name
1
2
fh
tm
有一个任务(task)表如下,主键也是id,如下:
id person_id content
1
2
2
2
tm1 works well
tm2 works well
请你找到每个人的任务情况,并且输出出来,没有任务的也要输出,而且输出结果按照person的id升序排序,输出情况如下:

id name content
1
2
2
fh
tm
tm
NULL
tm1 works well
tm2 works well

示例1

输入

drop table if exists person;
drop table if exists task;
CREATE TABLE `person` (
`id` int(4) NOT NULL,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`));

CREATE TABLE `task` (
`id` int(4) NOT NULL,
`person_id` int(4) NOT NULL,
`content` varchar(32) NOT NULL,
PRIMARY KEY (`id`));

INSERT INTO person VALUES
(1,'fh'),
(2,'tm');

INSERT INTO task VALUES
(1,2,'tm works well'),
(2,2,'tm works well');

输出

id|name|content
1|fh|None
2|tm|tm works well
2|tm|tm works well
SELECT t1.id,t1.name,t2.content
FROM person AS t1 LEFT OUTER JOIN task AS t2
ON t1.id = t2.person_id
ORDER BY t1.id;

我就纳闷我为什么排个序就变成了根据id进行分组了,几分钟才明白,原来我把ORDER BY 用成了GROUP BY了
发表于 2021-11-14 09:43:35 回复(0)
没有任务的人也要生成表项,使用left join即可

select p.id as id, name, content
from person as p left join task as t on p.id = t.person_id
order by p.id


发表于 2020-08-13 17:54:30 回复(0)
select p.id, p.name, t.content
   from 
       person p left join task t
       on p.id = t.person_id
order by p.id;

发表于 2020-09-29 16:41:16 回复(0)
注意person里的id对应task的person_id
发表于 2020-08-17 23:00:00 回复(6)
SELECT p.id, p.name, t.content
FROM person AS p LEFT JOIN task AS t
ON p.id = t.person_id
ORDER BY p.id 

发表于 2020-08-16 03:28:53 回复(3)
考点:左连接。没有任务的显示为空一般用左连接查询
select T.id, name, content
from person T
left join task T2 on T2.person_id = T.id
order by T.id


发表于 2021-03-28 10:33:34 回复(0)
你特喵的能不能把关联说清楚,什么也是id????shabier
发表于 2022-03-08 10:54:45 回复(0)
错误代码如下
select person.id,person.name,task.content 
from person 
left join task 
on person.id=task.id 
order by person.id;

我还在奇怪为啥我用的left join输出结果没有个null,
后来发现,别人join表是用
on person.id=task.person_id
而我是用
on person.id=task.id

诶 这种错误就好难避免
编辑于 2021-07-22 15:02:56 回复(4)
select p.id,name,content
from person p
left join task t
on p.id=t.person_id
order by p.id

发表于 2023-09-06 16:14:45 回复(0)
select s1.id, s1.name, s2.content from person s1 left join task s2 on s1.id = s2.person_id;
题目描述不清楚
发表于 2022-06-04 20:15:56 回复(0)
发表于 2022-05-10 21:04:20 回复(1)
select a.id, a.name, b.content
from person a
left join task b on a.id = b.person_id
order by id
发表于 2022-04-17 21:38:33 回复(0)
SELECT p.id, p.name, t.content from person p left join task t on p.id = t.person_id;
注意:即使任务为空也要输出,使用左连接,保留主表字段
发表于 2021-08-01 20:57:55 回复(0)
select t1.id,t1.name,t2.content
from person as t1
left join task as t2 
on t1.id = t2.person_id;
发表于 2025-02-21 17:10:28 回复(0)
select p.id,name,content from person p
left join task t
on p.id=t.person_id
 order by id ;
发表于 2025-02-01 19:15:58 回复(0)
select p.id,name,t.content
from person p
left join task t on p.id=t.person_id
order by p.id

发表于 2024-10-30 16:26:49 回复(0)
SELECT
    p.id,
    p.name,
    t.content
FROM person p
LEFT JOIN task t
ON p.id = t.person_id
注意:person表中的id表示person_id
发表于 2024-10-25 22:35:30 回复(0)
select person.id,name,content
from person left join task 
on person.id = task.person_id
order by person.id asc;

person表左连接task表,person的fh也要保留输出
发表于 2024-10-06 22:22:17 回复(0)
select person.id, name, content
from person left join task on person.id = task.person_id
order by person.id

发表于 2024-09-20 14:48:48 回复(0)
这个软件有bug吧,明明写的是题解里的答案一样,但是跑出来的是缺少null的
发表于 2024-09-10 17:06:30 回复(0)