查询出某表中一字段相同但二字段不同的数据,怎么查?

有表如下:

+----+-------+------------+

| id | grand | student_id |

+----+-------+------------+

|  1 |    10 |          1 |

|  2 |    10 |          1 |

|  3 |    10 |          1 |

|  4 |    10 |          2 |

|  5 |    11 |          2 |

|  6 |    12 |          3 |

|  7 |    10 |          3 |

+----+-------+------------+

我需要查询出student_id相同,但grand不同的数据,也就是后四条,如何查询?

select * from 表 group_by grand,student_id,3 having count(*)=1;