如何让所有标记比特定学生更大的学生

时间:2016-12-18 18:10:19

标签: mysql sql database

我有一个名为students的表,它看起来如下。

id name mark 
1   A    10
2   B    20
3   C    30
4   D    40

现在,我怎样才能让所有标记大于学生姓名的学生B'。我可以使用以下查询。

SELECT * from student WHERE mark > (SELECT mark FROM student WHERE name = 'B');

没有子查询可以吗?

2 个答案:

答案 0 :(得分:1)

是的,通过双重加入INNER JOIN表,如下所示

SELECT s.* 
from student s
join student s1
on s.mark > s1.mark
and s1.name = 'B';

(或)使用WHERE EXISTS之类的

SELECT * from student s
WHERE EXISTS (SELECT 1 
                FROM student 
                WHERE name = 'B'
                AND s.mark > mark);

答案 1 :(得分:0)

您可以尝试使用存储过程将学生B的标记存储到变量中,然后在第一个查询的WHERE子句中使用该变量。

但是,我认为子查询是最好的方法。

为什么要避免使用子查询?