mysql 查询重写_mysql-如何将数据库子查询重写为联接?

博客内容讨论了如何将一个SQL查询从子查询形式转换为联接形式,以获取每个员工的最新职位信息。示例中展示了`job`表的数据插入,并提供了获取当前职位的子查询。提问者寻求将这个子查询重写为联接操作,以避免使用子查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在尝试将此子查询重写为联接.我已经阅读了关于SO的其他问题,但是无法解决这个问题.

create table job (

emplid int,

effdt date,

title varchar(100),

primary key (emplid, effdt)

);

insert into job set emplid=1, effdt='2010-01-01', title='Programmer';

insert into job set emplid=1, effdt='2011-01-01', title='Programmer I';

insert into job set emplid=1, effdt='2012-01-01', title='Programmer II';

insert into job set emplid=2, effdt='2010-01-01', title='Analyst';

insert into job set emplid=2, effdt='2011-01-01', title='Analyst I';

insert into job set emplid=2, effdt='2012-01-01', title='Analyst II';

#Get each employees current job:

select *

from job a

where a.effdt=

(select max(b.effdt)

from job b

where b.emplid=a.emplid);

结果:

+--------+------------+---------------+

| emplid | effdt | title |

+--------+------------+---------------+

| 1 | 2012-01-01 | Programmer II |

| 2 | 2012-01-01 | Analyst II |

+--------+------------+---------------+

我想将查询重写为联接,而无需子查询.这可能吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值