Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql синтаксис и ansi sql синтаксис / 2 сообщений из 2, страница 1 из 1
14.09.2015, 02:30:12
    #39050503
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql синтаксис и ansi sql синтаксис
на stackoverflow заявляется, что эти два запроса эквивалентны

Код: sql
1.
2.
3.
4.
5.
6.
-- mysql

update t1 a 
    left join t2 b on a.uae = b.uae
set a.v = b.v 
where a.v = 0 and b.v != 0;



Код: sql
1.
2.
3.
4.
5.
6.
-- ansi sql

update a set v = 
(select b.v from a 
     left join b on a.uae = b.uae 
     where a.v = 0 and b.v != 0)



но неужели они и вправду эквивалентны при исполнении????
мне интуитивно почему-то кажется, что в первом запросе таблица составляется один раз, а во втором каждый раз...
или они действительно эквивалентны???
...
Рейтинг: 0 / 0
14.09.2015, 06:50:17
    #39050513
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql синтаксис и ansi sql синтаксис
Lumix,
не эквивалентны.
Первый запрос обновляет записи t1 у которых v = 0.
Второй запрос не выполняется (ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause).
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql синтаксис и ansi sql синтаксис / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]