Предположим, у меня есть таблица (соотношение), какКак написать sql для этого случая?
MyTab(ID1,ID2,IsMarked, data,....)
образец данных может быть, выглядит следующим образом:
1, 1, 1, ...
1, 2, 0, ...
1, 3, 0, ...
2, 34, 1, ...
3, 4, 0, ...
4, 546, 0, ...
4, 8, 0, ...
только один может быть отмечен для каждого ID1
. Я хочу получить данные, помеченные как 1
для всех сущностей ID1
. Если нет отмеченной записи, получите первый или любой из них.
Для этих выборочных данных, то результат должен быть:
1, 1, 1, ...
2, 34, 1, ...
3, 4, 0, ...
4, 546, 0, ...
Союз может быть решением, но это слишком долго и может иметь плохую производительность. Моя идея состоит в том, чтобы сортировать данные по ID1
и IsMarked
desc, получить первый 1 для каждого ID1
, но как написать SQL
для этого случая?
* Если нет makred записи, получить первый *, как вы заказываете эти строки ?, откуда вы знаете, какая строка первая? – Lamak
Возможно ли, чтобы один ID1 имел несколько наборов IsMarked? Например. данные могут выглядеть как 1,1,1 ... 1,2,1 ... –