[英]Select records after id after ordering by another column
假设我们有一张按重量排序的桌子
select id,
weight
from TABLE
order by weight
;
id weight
--- -------
66 2.50
12 12.00
11 24.00
19 25.00
6 44.00
7 45.00
8 47.00
9 48.00
10 50.00
我们只想返回大于或等于某个id的权重的记录。 例如,如果我们想要id = 7,那么我们将得到
id weight
--- -------
7 45.00
8 47.00
9 48.00
10 50.00
或者换句话说,表中所有记录按权重从id = 7的行开始排序。我们不需要权重,我们需要id。
我猜一个简单的内部查询就可以了:
SELECT `id`
FROM `TABLE`
WHERE `weight` >= (SELECT `weight`
FROM `TABLE`
WHERE `id` = 7
LIMIT 1)
ORDER BY `id`
如果您想权重大于id 7的记录,那么它将起作用:
SELECT id,
weight
FROM TABLE
WHERE weight >= (SELECT weight
FROM TABLE
WHERE id = 7)
ORDER BY weight
如果您真的想用JOIN
而不是子查询来做:
SELECT t1.id, t1.weight
FROM TABLE AS t1
JOIN TABLE AS t2 ON t1.weight >= t2.weight
WHERE t2.id = 7
ORDER BY t1.weight
可以一键完成,但是您必须使用这样的用户定义变量
SELECT id, weight,
CASE WHEN id = 7 THEN @weight := weight
ELSE @weight
END AS compare_weight
FROM `TABLE`
HAVING weight >= compare_weight
ORDER BY weight ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.