Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2017, 11:42   #1
ssm116
 
Регистрация: 27.07.2017
Сообщений: 5
Радость [РЕШЕНО] UPDATE и SELECT

Доброго дня.Не могу справиться с задачей.Прошу помощи. Существует 2 таблицы tab1 и tab2 нужно обновить поле name в таблице tab1 если id tab1=id tab2 .
Я сделал так
UPDATE tab1 SET name = 1 WHERE tab1.id = (SELECT tab2.id from tab2)
все работает если в tab2 только одна строка,но если больше то как я понимаю значение tab2.id это массив из всех id таблицы tab2 (к примеру 1234567) и сравнивается id tab1 в котором нет такого id. так вот как сделать что бы все корректно работало? Я так предполагаю что нужно перебирать по одному значению из массива tab2.id ([1] [2] [3] [4] [5] [6] [7])?

Решение в сообщении ниже

Последний раз редактировалось Вадим Мошев; 11.05.2018 в 19:56.
ssm116 вне форума Ответить с цитированием
Старый 27.07.2017, 12:04   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

То есть обновить только те записи из tab1, для которых существуют записи в tab2 с таким же id? Так, например
Код:
UPDATE tab1 SET name = 1 WHERE EXISTS(SELECT 0 from tab2 WHERE tab2.id=tab1.id)
Или так
Код:
UPDATE tab1 SET name = 1 WHERE tab1.id IN (SELECT tab2.id from tab2)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.07.2017, 12:45   #3
ssm116
 
Регистрация: 27.07.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
То есть обновить только те записи из tab1, для которых существуют записи в tab2 с таким же id? Так, например
Код:
UPDATE tab1 SET name = 1 WHERE EXISTS(SELECT 0 from tab2 WHERE tab2.id=tab1.id)
Или так
Код:
UPDATE tab1 SET name = 1 WHERE tab1.id IN (SELECT tab2.id from tab2)
Все СУПЕР!!!!! ВСЕ РАБОТАЕТ!!! Огромное спасибо!Вы мне очень помогли!

Последний раз редактировалось Вадим Мошев; 11.05.2018 в 19:58.
ssm116 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свой update для поля (решено) GreenWizard БД в Delphi 5 06.05.2017 15:39
[РЕШЕНО] Как передать значение из <select> в action формы polluxstar HTML и CSS 8 15.04.2016 11:38
Использование операторов SELECT, DELETE и UPDATE в одном запросе в PDO Dante5 SQL, базы данных 4 19.09.2015 11:41
как сделать UPDATE после SELECT? RusikOk SQL, базы данных 5 31.07.2014 16:05
Сделать select перед update DimaNIKul SQL, базы данных 19 20.06.2014 00:20