我有一个SQL表:
username | rank
a | 0
b | 2
c | 5
d | 4
e | 5
f | 7
g | 1
h | 12
我想使用一个select语句,它返回排名大于用户e排名值的所有行。
这可以用一个声明吗?
答案 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';
答案 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')