Re: [SQL ] 请教 SQL 语法关于 group by

楼主: cutekid (可爱小孩子)   2016-11-15 23:27:25
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 做到吗?
: 谢谢!
作者: suomax (SUOMAX)   2016-11-17 10:44:00
wow! 感谢
作者: dodobear (Arnold)   2016-11-18 10:40:00
上来查问题刚好看到这篇,得救了,感恩
作者: e2755699 (酣酣)   2016-12-16 18:17:00
我想请教一下这query最后有按照time排序吗?好向只显示最大时间吼

Links booklink

Contact Us: admin [ a t ] ucptt.com