использование СОЕДИНЕНИЯ в ОБНОВЛЕНИИ в SQL

Я испытываю затруднения при формулировке легального оператора для удвоения состояний поставщиков (поставщиков), которые поставили (SP) больше чем 500 единиц. Я пробовал:

update s 
set s.status = s.status * 2 
from s join sp  
    on (sp.sno = s.sno) 
group by sno 
having sum(qty) > 500;

однако я получаю эту ошибку от Mysql:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 
'from s join sp on (sp.sno = s.sno) group by sno having sum(qty) > 500' at line 1

У кого-либо есть какие-либо идеи обо что не так с этим запросом? Вот моя схема:

create table s
  ( sno    char(5)  not null,
    sname  char(20) not null,
    status smallint,
    city   char(15),
    primary key (sno)
  );
create table p
  ( pno    char(6)  not null,
    pname  char(20) not null,
    color  char(6),
    weight smallint,
    city   char(15),
    primary key (pno)
  );
create table sp
  ( sno    char(5)  not null,
    pno    char(6)  not null,
    qty    integer  not null,
   primary key (sno, pno)
  );
1
задан Michael Todd 28 April 2010 в 03:11
поделиться

2 ответа

Официально ANSI SQL не поддерживает предложение FROM в предложении UPDATE. Это особенность производителя. Вместо этого вы можете сделать что-нибудь вроде:

Update s
Set status = status * 2 
Where Exists    (
                Select 1
                From sp
                Where sp.sno = s.sno
                Group By sp.sno
                Having Sum(qty) > 500
                )
2
ответ дан 3 September 2019 в 00:58
поделиться

Попробуйте использовать это: http://code.google.com/p/django-session-messages/

или используйте Django 1.2 (в настоящее время в бета-версии) и структуру сообщений: http: //docs.djangoproject.com/en/dev/ref/contrib/messages/#ref-contrib-messages

121---2557638-

Стандартный SQL имеет MERGE, который разрешает обновления на основе соединения. Соединения не разрешены в стандартных SQL UPDATE, за исключением подзапросов, следующих за предложением SET.

0
ответ дан 3 September 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: