2 qq 40076006 qq_40076006 于 2017.09.04 11:16 提问

MAX函数,查不出字段值数据,求高手指点。
max

bao1
ID 姓名
1 张三
2 李四
3 王五

bao2
ID 姓名 职位 日期
1 张三 经理 2017-09-01
2 张三 科长 2017-09-02
3 李四 工人 2017-09-01
4 李四 经理 2017-09-02

先找出bao2中日期最大值的数据,然后再与bao1中姓名作对比,查询结果如下:

查询结果:

姓名 职位 日期
张三 科长 2017-09-02
李四 经理 2017-09-02
王五

注:因为王五在bao2中是没有数据,所以在职位与日期中为空

我写了一条语句,只能查询出姓名,日期,但bao2中的职位找不出来,找高手指点,十分感谢。

{SELECT ID,姓名,(SELECT max(日期) FROM bao2 where bao1.姓名=bao2.姓名)as 日期 FROM bao1}

这条找不出“职位”这一字段的数据,是不是因为这条语句只是把子查询作为列,所以找不出职位这个字段的数据?

4个回答

adu123_
adu123_   2017.09.04 16:03
已采纳

都没有返回职位的字段,怎么显示

cyjdapao
cyjdapao   2017.09.04 11:50

select b1.name,b2.职位 from bao1 b1 left join bao2 b2 on ( b2.name in(select name from bao2 where 日期 in (select max(日期) from bao2)))
或者
select b1.name,b2.职位 from bao1 b1 left join bao2 b2 on b1.name = b2.name AND b2.时间 = (select max(时间) from bao2)

qq_40076006
qq_40076006 不对,有错误
2 个月之前 回复
fanyizhuang
fanyizhuang   2017.09.04 11:27

没有查询职位怎么显示呀

qq_40076006
qq_40076006 帮我看看,要怎么写语句?
3 个月之前 回复
qq_39991461
qq_39991461   2017.09.04 13:07

SELECT t1.*,t2.role,t2.date from biao1 as t1 LEFT JOIN biao2 as t2
on t1.name=t2.name AND t2.date=(select max(date) from biao2)
已经试过可以
1 张三 科长 2017-09-02
2 李四 经理 2017-09-02
3 王五

qq_40076006
qq_40076006 在access上执行,报错。你是在sql上测试的吗?
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片