Я испытываю затруднения при формулировке легального оператора для удвоения состояний поставщиков (поставщиков), которые поставили (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)
);
Официально 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
)
Попробуйте использовать это: 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.