我有一个包含列重量,高度,膝盖,日期,id的表我想在同一个表中找到两行 - 第一行是min(重量),另一行是max(weight)。即使所有内容都在同一个表中,我如何访问这两行的日期和ID。
答案 0 :(得分:0)
尝试搜索最小和最大重量:
SELECT *
FROM yourTable
WHERE
weight = (SELECT MIN(weight) FROM yourTable) OR
weight = (SELECT MAX(weight) FROM yourTable);
请注意,如果有多个记录与最小/最大权重相关联,则上述查询可能会产生超过2条记录。如果关系是可能的,那么你应该提供如何处理这个问题的逻辑。
如果您使用的是MySQL 8或更高版本,并且可以访问ROW_NUMBER
,那么这里有一个灵活的解决方案:
SELECT *
FROM
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY weight) rn1,
ROW_NUMBER() OVER (ORDER BY weight DESC) rn2
FROM yourTable
) t
WHERE 1 IN (rn1, rn2);
答案 1 :(得分:0)
union all
:
(select t.*
from t
order by weight asc
limit 1
) union all
(select t.*
from t
order by weight desc
limit 1
);
如果您有weight
的索引,那么这在性能方面应该是最佳的。
这确保了结果集中的两行,即使存在联系。