Re: [SQL ] 請教 SQL 語法關於 group by
select t1.*
from tbl t1 inner join (
select first_name,last_name,max(time) time
from tbl
where type != 100
group by first_name,last_name
) t2
on t1.first_name = t2.first_name and
t1.last_name = t2.last_name and
t1.time = t2.time
left join tbl t3
on t1.first_name = t3.first_name and
t1.last_name = t3.last_name and
t3.type = 100
order by t3.type desc
※ 引述《suomax (SUOMAX)》之銘言:
: (針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
: 資料庫名稱: Sqlite
: 資料庫版本: 3.x (Android)
: 內容/問題描述:
: 請教各位 SQL 前輩,
: 我有一個資料表的結構是這樣
: _ID FIRST_NAME LAST_NAME TYPE TIME
: 1 Mark Zuckerberg 1 10000
: 2 Larry Page 1 10001
: 3 Jeff Weiner 1 10002
: 4 Elon Musk 2 10003
: 5 Lary Page 2 10004
: 6 Mark Zuckerberg 100 10005
: 7 Elon Musk 1 10006
: 8 Mark Zuckerberg 2 10007
: 9 Larry Page 100 10008
: 希望的查詢結果:
: 1. 讓記錄中有出現 TYPE=100 的排在最前面, 再按照 TIME 排序
: 2. 排除 TYPE=100, 每個 FIRST_NAME,LAST_NAME 只出現一次
: 例:
: _ID FIRST_NAME LAST_NAME TYPE TIME
: 5 Larry Page 2 10003 // #9 type=100, time=10008
: 8 Mark Zuckerberg 2 10007 // #6 type=100, time=10004
: 7 Elon Musk 1 10006 // #6 time=10006
: 3 Jeff Weiner 1 10002 // #3 time=10002
: 希望達到的目的是 type=100 當做某種特殊記錄, 讓某個人置頂
: 同時也因為他只當做特殊符號, 所以不顯示在最後列出的結果中
: 像這樣的用法,有可能做到嗎?
: 有可能用一行 query 做到嗎?
: 謝謝!
-----
Sent from JPTT on my Asus ASUS_Z017DA.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.138.96.216
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1479223647.A.34A.html
※ 編輯: cutekid (101.138.96.216), 11/16/2016 00:20:42
推
11/17 10:44, , 1F
11/17 10:44, 1F
推
11/18 10:40, , 2F
11/18 10:40, 2F
推
12/16 18:17, , 3F
12/16 18:17, 3F
→
12/16 18:18, , 4F
12/16 18:18, 4F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章