选择列值大于某个值的所有行

时间:2013-08-07 05:54:07

标签: mysql sql select

我有一个SQL表:

username  |  rank 
a         |  0
b         |  2
c         |  5
d         |  4
e         |  5
f         |  7
g         |  1
h         |  12

我想使用一个select语句,它返回排名大于用户e排名值的所有行。

这可以用一个声明吗?

4 个答案:

答案 0 :(得分:8)

是的,这是可能的。

SELECT * FROM MyTable 
WHERE rank > (SELECT Rank FROM MyTable WHERE username = 'e')

或者您也可以将self-join用于相同的

SELECT t1.* FROM MyTable t1
  JOIN MyTable t2
    ON t1.Rank > t2.Rank
   AND t2.username = 'e';

请参阅this SQLFiddle

答案 1 :(得分:2)

您可以使用子查询

SELECT * FROM `table` WHERE `rank` > (
SELECT `rank` FROM `table` WHERE `username` ='b' LIMIT 1)

答案 2 :(得分:1)

SELECT *
FROM tbl 
WHERE
   tbl.rank > (
       SELECT rank FROM tbl WHERE username = 'e'
   );

请注意,这仅在子选择(括号中的部分)仅返回单个值(一行,一列可以说)时才有效。

答案 3 :(得分:1)

这只是@UweB的编辑脚本..即使有多行用户名='e',它也会返回最高排名

SELECT *
FROM tbl 
WHERE
tbl.rank > (
   SELECT max(rank) FROM tbl WHERE username = 'e')