![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять избавление от вложенного запроса. На этот раз внутри UPDATE [MySQL]
VictorT © (2004-02-18 16:24:00)Нужно переформулировать такой запрос:
update firm_ref set sourceid=13 where firm_ref.regnum in (select distinct exhibitionfirms.regnum from exhibitionfirms)
VictorT (2004-02-18 17:49:00) [1]
> в попытке избавиться от вложенного запроса в данном случае.
Дак я бы и не избавлялся, если бы это работало. Но в MySQL со вложенным не проходит.
Val (2004-02-18 17:36:00) [2]>VictorT © (18.02.04 17:01) [11]
в попытке избавиться от вложенного запроса в данном случае.
VictorT (2004-02-18 17:32:00) [3]
> Там и делете такое [4] упомянут,
хм... действительно... а в моём мануале этого нет...
> и про апдейт исчерпывающе написано
То же, что и в моём мануале. Если действительно исчерпывающе (ничего не упущено), то наверно придётся всё-таки делать апдейт в цикле :(
Johnmen (2004-02-18 17:19:00) [4]>VictorT © (18.02.04 17:14) [13]
Хм... Там и делете такое [4] упомянут, и про апдейт исчерпывающе написано...:)
VictorT (2004-02-18 17:14:00) [5]
> Johnmen © (18.02.04 17:05) [12]
B где там решение моей проблемы?
Johnmen (2004-02-18 17:05:00) [6]Врешь ты всё... В Описании всё четко описано...
http://soft.org.ua/docs/mysql/ru/UPDATE.html
VictorT (2004-02-18 17:01:00) [7]
> Не вижу смысла, честно говоря...
Не видишь смысла в чём?
VictorT (2004-02-18 16:57:00) [8]
> Ну ясен пень, в доку по майэскуэльному SQL синтаксису глянуть
> лень...:(
В том то и дело, не описано там такого...
Вот к примеру описание DELETE:
DELETE FROM table_name WHERE where_definition
Здесь where_definition имеет формат:
where_definition:
where_expr or where_expr [AND | OR] where_expr
where_expr имеет формат:
where_expr:
column_name [> | >= | = | <> | <= | < ]
column_name_or_constant or
column_name LIKE column_name_or_constant or
column_name IS NULL or column_name IS NOT NULL or (where_definition)
и при этом проканывает такой запрос:
delete table1 from table1, table2 where table1.field1 = table2.field1
хотя он и не стыкуется с описанием.
Подумал, мож и с UPDATE есть что-то недокументированное...
Вот его описание:
UPDATE table SET column=expression,... WHERE where_definition
Здесь where_definition:
where_definition:
where_expr or where_expr [AND | OR] where_expr
Здесь where where_expr имеет формат:
where_expr:
column_name [> | >= | = | <> | <= | < ]
column_name_or_constant or
column_name LIKE column_name_or_constant or
column_name IS NULL or column_name IS NOT NULL or (where_definition)
VictorT (2004-02-18 16:52:00) [9]
> Guest (18.02.04 16:33) [5]
Не проканывает.
> такой синтаксис проходит в MySQL?
С UPDATE не прошёл, а тот, что я привёл с DELETE, проходит. Кстати, я вообще не видел такого синтаксиса ни в SQL вообще (языка), ни в описании MySQL в частности. Сам удивился, когда мне предложили так попробовать с DELETE, но оказалось, работает.
Johnmen (2004-02-18 16:48:00) [10]Ну ясен пень, в доку по майэскуэльному SQL синтаксису глянуть лень...:(
Guest (2004-02-18 16:41:00) [11][6] Val © (18.02.04 16:40)
Откуда я знаю? :)
Я просто предположил, что он мог бы быть таким. По аналогии.
Val (2004-02-18 16:40:00) [12]>Guest (18.02.04 16:33) [5]
такой синтаксис проходит в MySQL?
>VictorT © (18.02.04 16:32) [4]
Не вижу смысла, честно говоря...
Guest (2004-02-18 16:33:00) [13]update table1 from table1, table2 set field2=13 where table1.field1 = table2.field1?
VictorT (2004-02-18 16:32:00) [14]
> 1. Менять СУБД.
Нет возможности.
> 2. Курсор по select distinct regnum from exhibitionfirms
> с выполнением внутри него update firm_ref set sourceid=13
> where regnum=?
Так и собирался сделать в случае, если не найду лучшего решения.
К примеру запрос:
delete from table1
where field1 in (select field1 from table2)
удалось заменить на:
delete table1 from table1, table2 where table1.field1 = table2.field1
Может нечто подобное можно и для UPDATE...
Guest (2004-02-18 16:29:00) [15][2] asp © (18.02.04 16:27)
MySQL и Exists не поддерживает IIRC.
Guest (2004-02-18 16:27:00) [16]1. Менять СУБД.
2. Курсор по select distinct regnum from exhibitionfirms
с выполнением внутри него update firm_ref set sourceid=13 where regnum=?
asp (2004-02-18 16:27:00) [17]Переформулируй на EXISTS...