首页 > 试题广场 >

找到每个人的任务

[编程题]找到每个人的任务
  • 热度指数:91993 时间限制: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');

输出

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)
错误代码如下
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 回复(3)
你特喵的能不能把关联说清楚,什么也是id????shabier
发表于 2022-03-08 10:54:45 回复(0)
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)
发表于 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 a.id,a.name,b.content from person a
left join task b
on a.id=b.person_id
order by a.id;

发表于 2024-02-05 13:52:28 回复(0)
select person.id,person.name,task.content
from person
left join task 
on person.id = task.person_id
order by person.id;
发表于 2024-01-22 00:38:57 回复(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 ASC

使用左外连接即可
发表于 2023-11-30 14:25:54 回复(0)
select
    a.id,
    name,
    content
from
    person a
    left join task b on a.id = b.person_id
order by
    id

发表于 2023-11-01 21:58: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


发表于 2023-10-30 11:40:20 回复(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 asc;

发表于 2023-10-12 14:59:13 回复(0)
select person.id, name, content
from person
left join task on person.id=task.person_id
order by person.id asc
打卡
发表于 2023-08-12 23:14:16 回复(0)
select person.*,task.content 
from person 
left join task on person.id=task.person_id 
order by person.id;

发表于 2023-08-11 10:46:21 回复(0)