Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Опять избавление от вложенного запроса. На этот раз внутри 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
1-1078990342
BorisMor
2004-03-11 10:32
2004.03.28
Определить зарегистрирован ли ОСХ


14-1077891021
Cosinus
2004-02-27 17:10
2004.03.28
Подскажите, как сделать такой Edit . Замучался уже подбирать.


11-1057043405
mdw
2003-07-01 11:10
2004.03.28
ComObj и KolComObj


4-1073995115
Chaynik
2004-01-13 14:58
2004.03.28
Как использовать 16 битную DLL в 32 битном приложении


8-1069289840
Кен
2003-11-20 03:57
2004.03.28
Как можно с вэбкамеры снять скриншот, записать видео ?