需求:
在postgresql測試過程如下:
第一種方法:sde=# select * from t1;
id | name
----------+------
20180001 | 張三
20180002 | 李四
20180003 | 王五
(3 行記錄)
sde=# select * from t2;
id | score | time
----------+-------+------------
20180001 | 88 | 2018-01-02
20180002 | 61 | 2018-01-02
20180001 | 91 | 2018-01-12
20180002 | 79 | 2018-01-12
20180001 | 85 | 2018-01-22
20180002 | 98 | 2018-01-22
(6 行記錄)
第二種方法(使用with方法):sde=# select t3.id,t3.name,t2.score from
sde-# (
sde(# select c.id,c.name as name,max(c.time) as time from
sde(# (
sde(# select a.name as name ,a.id as id,b.score as score,b.time as time
sde(# from t1 a left join t2 b on a.id=b.id
sde(# )
sde(# c group by c.id,c.name
sde(# ) t3 left join t2 on t3.id=t2.id and t3.time=t2.time;
id | name | score
----------+------+-------
20180001 | 張三 | 85
20180002 | 李四 | 98
20180003 | 王五 |
(3 行記錄)
sde=# with c as
sde-# (
sde(# select a.name as name ,a.id as id,b.score as score,b.time as time
sde(# from t1 a left join t2 b on a.id=b.id
sde(# ),
sde-# t3 as
sde-# (
sde(# select c.id,c.name as name,max(c.time) as time
sde(# from c group by c.id,c.name
sde(# )
sde-# select t3.id,t3.name,t2.score
sde-# from t3 left join t2 on t3.id=t2.id and t3.time=t2.time;
id | name | score
----------+------+-------
20180001 | 張三 | 85
20180002 | 李四 | 98
20180003 | 王五 |
(3 行記錄)
leetcode 課程表I,課程表II
課程表 你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例 1 輸入 2,1...
sql多表查詢 學生課程表查詢
學生表 序號,姓名,年齡,專業 create table s sno int 11 auto increment,sname varchar 125 sage int 11 sdept varchar 125 primary key sno 課程表 序號,課程名 create table c cno...
html課程表頁面
效果圖 html 部分 charset utf 8 課程表title align center 課程表h2 caption class info align center valign middle 專案td colspan 5 align center valign middle 上課td col...