我的表结构是:
id userid collegeid startyr endyr
1 1 5 1995 1998
2 1 6 1999 2001
3 3 6 1999 2001
4 4 6 2000 2003
5 5 5 1995 1998
6 5 6 2005 2008
7 7 10 1999 2001
即如果我的用户名是1.我在1995年至1998年和1999年至2001年期间在大学5,6学习
我想要获取用户(除了我的ID)
的顺序因此输出将按照
的顺序排列id userid collegeid startyr endyr
5 5 5 1995 1998 (My college my batch
3 3 6 1999 2001 (My college my batch
4 4 6 2000 2003 (My college another batch)
6 5 6 2005 2008 (My college another batch)
7 7 10 1999 2001
如何编写select查询以获取这些依赖顺序。
答案 0 :(得分:1)
我们可以尝试使用三层CASE
表达式进行排序。最高优先级记录是大学和批次都与您自己匹配的记录。接下来是匹配大学的那些记录,但是不同的批次。最后,所有其他记录都遵循前两种情况。 ORDER BY
子句的第二部分是按年份递增的每个组中的顺序(这似乎是您所期望的)。
SELECT id, userid, collegeid, startyr, endyr
FROM yourTable
WHERE userid <> 1
ORDER BY
CASE WHEN collegeid IN (5, 6) AND (startyr, endyr) IN
((1995, 1998), (1999, 2001)) THEN 1
WHEN collegeid IN (5, 6) THEN 2
ELSE 3 END,
startyr;