Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизОпять избавление от вложенного запроса. На этот раз внутри UPDATE Найти похожие ветки
← →
VictorT © (2004-02-18 16:24) [0]Нужно переформулировать такой запрос:
update firm_ref set sourceid=13 where firm_ref.regnum in (select distinct exhibitionfirms.regnum from exhibitionfirms)
← →
Guest (2004-02-18 16:27) [1]1. Менять СУБД.
2. Курсор по select distinct regnum from exhibitionfirms
с выполнением внутри него update firm_ref set sourceid=13 where regnum=?
← →
asp © (2004-02-18 16:27) [2]Переформулируй на EXISTS...
← →
Guest (2004-02-18 16:29) [3][2] asp © (18.02.04 16:27)
MySQL и Exists не поддерживает IIRC.
← →
VictorT © (2004-02-18 16:32) [4]
> 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:33) [5]update table1 from table1, table2 set field2=13 where table1.field1 = table2.field1?
← →
Val © (2004-02-18 16:40) [6]>Guest (18.02.04 16:33) [5]
такой синтаксис проходит в MySQL?
>VictorT © (18.02.04 16:32) [4]
Не вижу смысла, честно говоря...
← →
Guest (2004-02-18 16:41) [7][6] Val © (18.02.04 16:40)
Откуда я знаю? :)
Я просто предположил, что он мог бы быть таким. По аналогии.
← →
Johnmen © (2004-02-18 16:48) [8]Ну ясен пень, в доку по майэскуэльному SQL синтаксису глянуть лень...:(
← →
VictorT © (2004-02-18 16:52) [9]
> Guest (18.02.04 16:33) [5]
Не проканывает.
> такой синтаксис проходит в MySQL?
С UPDATE не прошёл, а тот, что я привёл с DELETE, проходит. Кстати, я вообще не видел такого синтаксиса ни в SQL вообще (языка), ни в описании MySQL в частности. Сам удивился, когда мне предложили так попробовать с DELETE, но оказалось, работает.
← →
VictorT © (2004-02-18 16:57) [10]
> Ну ясен пень, в доку по майэскуэльному 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 17:01) [11]
> Не вижу смысла, честно говоря...
Не видишь смысла в чём?
← →
Johnmen © (2004-02-18 17:05) [12]Врешь ты всё... В Описании всё четко описано...
http://soft.org.ua/docs/mysql/ru/UPDATE.html
← →
VictorT © (2004-02-18 17:14) [13]
> Johnmen © (18.02.04 17:05) [12]
B где там решение моей проблемы?
← →
Johnmen © (2004-02-18 17:19) [14]>VictorT © (18.02.04 17:14) [13]
Хм... Там и делете такое [4] упомянут, и про апдейт исчерпывающе написано...:)
← →
VictorT © (2004-02-18 17:32) [15]
> Там и делете такое [4] упомянут,
хм... действительно... а в моём мануале этого нет...
> и про апдейт исчерпывающе написано
То же, что и в моём мануале. Если действительно исчерпывающе (ничего не упущено), то наверно придётся всё-таки делать апдейт в цикле :(
← →
Val © (2004-02-18 17:36) [16]>VictorT © (18.02.04 17:01) [11]
в попытке избавиться от вложенного запроса в данном случае.
← →
VictorT © (2004-02-18 17:49) [17]
> в попытке избавиться от вложенного запроса в данном случае.
Дак я бы и не избавлялся, если бы это работало. Но в MySQL со вложенным не проходит.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c