ОБНОВЛЕНИЕ SQL с подсчетом

У меня был этот стол

A B
1 1H
2 1H
1 1G
1 1E

Мне нужно обновить этот столбец таблицы A, который принимает группу max (a) от B с count (*) = 2.

Результат будет такой:

A B
2 1H
2 1H
1 1G
1 1E

person Jan Papota    schedule 24.10.2018    source источник
comment
Не храните данные, рассчитанные на основе других табличных данных - вы получите противоречивые данные. Вместо этого создайте представление.   -  person jarlh    schedule 24.10.2018
comment
Это однократный сценарий, используемый после первой загрузки данных в таблицу. Мне нужно установить такое же значение A для группы B, но только если B имеет count = 2   -  person Jan Papota    schedule 24.10.2018
comment
Не могли бы вы попробовать stackoverflow .com / questions / 8793914 / эти решения   -  person Singh Kailash    schedule 24.10.2018
comment
Добавьте еще несколько примеров данных, а также его новый результат. (Чтобы прояснить проблему.)   -  person jarlh    schedule 24.10.2018


Ответы (2)


Возможно?

update tablename t1
set A = (select max(A) from tablename t2 where t2.B = t1.B)
where B in (select B from tablename group by B having count(*) >= 2)
person jarlh    schedule 24.10.2018
comment
Не для каждого t2.b = t1.b, но только если group by b имеет count = 2 - person Jan Papota; 24.10.2018
comment
Спасибо. Это оно. обновить tablename t1 set A = (выберите max (A) из tablename t2, где t2.B = t1.B), где B in (выберите B из группы tablename с помощью B, имеющего count (*) = 2); - person Jan Papota; 24.10.2018
comment
Большой. Я скорректирую свой ответ на MAX (). - person jarlh; 24.10.2018

Вы можете попробовать ниже

update tablename t1
set A = (select count(*) from tablename t2 where t2.B = t1.B having count(*)=2)
person Fahmi    schedule 24.10.2018