我有一个看起来像这样的表:
+-----+----+
|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
任何潜在客户都赞赏!
答案 0 :(得分:1)
这应该有效:
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
答案 1 :(得分:0)
SELECT
a.A, a.B
FROM table1 a WHERE B=(select MIN(b) FROM table1)
ORDER BY B DESC
答案 2 :(得分:0)
您可以使用子查询。首先确定满足条件的所有列。然后使用where过滤掉记录。
select A,B from(
select A,B, case when B<A then 'Y' else 'N' end as C from table)
where C = 'Y'