繁体   English   中英

SQL:根据另一列的值在一个列中选择一个项目

[英]SQL: Select an item in one column based on the other column's value

我有一个看起来像这样的表:

+-----+----+
|A    |B   |
+-----+----+
|    1|   0|
|    2|   1|
|    2|   1|
|    2|   1|
|    2|   2|
|    3|   1|
|    4|   1|
|    5|   1|
|    5|   2|
|    6|   2|
|    7|   2|
|    8|   2|
+-----+----+

我想选择A的值,其中B的值是最低的。 但要保留重复次数。 说我有3对,使得(4,5),(4,5),(4,6),我希望结果是(4,5),(4,5)。

对于上表,我希望输出为

+-----+----+
|A    |B   |
+-----+----+
|    1|   0|
|    2|   1|
|    2|   1|
|    2|   1|
|    3|   1|
|    4|   1|
|    5|   1|
|    6|   2|
|    7|   2|
|    8|   2|
+-----+----+

我试图做这样的事情,但我迷路了!

SELECT t1.A, t1.B from table t1 JOIN table t2
WHERE t1.B >= t2.B
ORDER BY B DESC

任何线索表示赞赏!

这应该工作:

select t1.* from mytable t1
join
    (select A, min(B) as B from mytable group by A) t2
on t1.A = t2.A and t1.B = t2.B
SELECT
a.A, a.B
FROM table1 a WHERE B=(select MIN(b) FROM table1)
ORDER BY B DESC

您可以使用子查询。 首先确定所有满足条件的列。 然后使用where过滤掉记录。

select A,B from(
        select A,B, case when B<A then 'Y' else 'N' end as C from table)
        where C = 'Y'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM