php mysql选择我的行数据

时间:2018-02-02 10:58:23

标签: php mysql

我的表结构是:

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)

的顺序
  1. 我在1995年和1999年开始的第5和第6批学院的大学里
  2. 在我的大学里分各不同
  3. 因此输出将按照

    的顺序排列
    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查询以获取这些依赖顺序。

1 个答案:

答案 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;

enter image description here

Demo