Как обновить несколько строк с определенным количеством с помощью предложения Group by? - PullRequest
1 голос
/ 06 марта 2012

Я хочу обновить несколько строк с определенным номером счета (count (*) = 2) с номером 40. Рассмотрим следующий пример:

create table test(id int not null primary key, day date not null, tst int not null  );
insert into test(id, day, tst) values(1, '2006-10-08', 0);

insert into test(id, day, tst) values(2, '2006-10-08', 0);

insert into test(id, day,tst) values(3, '2006-10-09', 0);

Я использовал следующий запрос UPDATE test SET tst = 40 WHERE (select day from test GROUP BY day having count(*)=2);

Но это никогда не работает. Любая помощь, пожалуйста ...

Спасибо.

Aymen

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Вот полный пример (используется Oracle вместо mysql, но синтаксис должен быть похожим, если не идентичным):

CREATE TABLE TEST (tst int, DAY INT)

INSERT INTO TEST VALUES (2, 4);
INSERT INTO TEST VALUES (3, 4);
INSERT INTO TEST VALUES (4, 5);

UPDATE TEST
   SET tst = 40
 WHERE EXISTS (SELECT DAY FROM TEST t2 WHERE t2.day = test.day GROUP BY DAY HAVING COUNT(*) = 2)
SELECT * FROM TEST;


Result:
    TST DAY
1   40  4
2   40  4
3   4   5
0 голосов
/ 16 апреля 2012

Слава Богу ... Наконец-то мы получили рабочий запрос:

UPDATE test1 SET tst = 40 WHERE EXISTS (SELECT day FROM (SELECT day from test1 ) 
AS tmpb WHERE test1.day = tmpb.day GROUP BY day HAVING COUNT(*) = 2)
...