SQL 两张表的查询语句如何写 10C

Table1
ID SN
1 AAAAA
2 BBBBB
3 CCC
Table2
ID TIME
1 2017.3.20
1 2017.3.21
1 2017.3.22
2 2017.4.20
2 2017.4.21
2 2017.4.22
3 2017.4.22
表1和表2的 ID 是关联的,表2的每个ID可能有多条记录,但是TIME列的值不同的。
要求输入多个SN,查询结果要求按时间排序,一个SN只保留最后一个日期的一条记录:
ID SN TIME
1 AAAAA 2017.3.22
2 BBBBB 2017.4.22
3 CCC 2017.4.22

sql

6个回答

SELECT dbo.Table_1.Id, dbo.Table_1.SN, MAX(dbo.Table_2.Time) FROM dbo.Table_2 INNER JOIN dbo.Table_1 ON Table_1.Id = Table_2.Id
GROUP BY dbo.Table_1.Id, dbo.Table_1.SN, dbo.Table_2.Id

hkmjia
hkmjia 回复changsons: group by 后面也不要忘记额
3 年多之前 回复
changsons
changsons 回复hkmjia: SELECT dbo.Table_1.Id, dbo.Table_1.SN, 在这后边加table2.列名 会提示列名无效啊
3 年多之前 回复
hkmjia
hkmjia 回复changsons: 只能全部写出来了,这个没什么捷径
3 年多之前 回复
changsons
changsons 回复hkmjia: 你好,实际上table 2有很多字段,有什么好方法能全显示出来?
3 年多之前 回复

select max(t2.id) as id,(select t1.sn from table1 t1 where t1.id =max(t2.id) as sn,max(t2.time) as time from table2 t2 group by t2.id;

changsons
changsons 回复我得乖乖: 你好,实际上table 2有很多字段,有什么好方法能全显示出来?
3 年多之前 回复
 select sn,(select max(time) from table2 where id = q.id ) from table1 q

select * from table2 t2 left join table1 t1 on t2.id=t1.id
where t1.sn=''
order by t2.time desc

select table2.sn from table1 left join (select max(time) sn,id from table2) table2 on table2.id=table1.id

select table2.sn from table1 left join (select max(time) sn,id from table2) table2 on table2.id=table1.id order by table2.sn desc

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐