У меня есть таблица, которая выглядит так:
+-----+----+
|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,B from(
select A,B, case when B<A then 'Y' else 'N' end as C from table)
where C = 'Y'
SELECT
a.A, a.B
FROM table1 a WHERE B=(select MIN(b) FROM table1)
ORDER BY B DESC