powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не правильно работает UPDATE
13 сообщений из 13, страница 1 из 1
Не правильно работает UPDATE
    #38616032
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь выполнить вот такой скрипт

UPDATE dbtest SET name='Вася' WHERE id='EJclcjer443t';
UPDATE dbtest SET name='Петя' WHERE id='dvcjh867787';
UPDATE dbtest SET name='Коля' WHERE id='dgevhjyjmb';

и т.д.

Т.е. при совпадении поля id(уникальное) сменить поле name
Однако, выполняется только первая строка.
Pgadmin пишет "Изменено строк 1. Обработано 500"
В чем может быть ошибка?
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38616043
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bivilbi,

PgAdmin'ом не пользуюсь, но первая мысль, что вы цепляетесь за ответ выданный после отработки последней команды из трёх. поселектите и проверте действительно ли ничего не изменилось.
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38616136
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho,

Смотрел на результат. Меняется только первая запись.
Пробовал и в EMS SQl manager
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38616138
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho,

Хотя когда выполняю похожий запрос но с другим столбцом (не name, а desc)
set desc='test1' where id='453534'

то все отрабатывает корректно
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38616273
Constanzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bivilbi, с большими/маленькими буквами в айди не мог что-нибудь напутать?
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38616311
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Constanzo,

нее. синтаксис четко соблюдаю
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38769861
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжу, что бы не открывать новую тему
Есть две таблицы с одинаковыми столбцами
im-nomer-col
Первая таблица -
Вася,,Красный;
Петя,,Синий;
Вася,,фиолетовый:
Петя,,зеленый;
Вася,,Красный;
Петя,,Синий;


Вторая таблица
Вася,333,;
Петя,444,:
Вася,,;
Петя,,:
Делаю , что-бы подставить из таблицы 2 в 1
update tab1 set nomer=(select nomer from tab2 where im=im and nomer is not null);
т.е. взять nomer при совпадении im
Но он берет первый номер из таблицы 2 и ставит во все столбцы номера таблицы 2.
Пробовал вот так
update tab1 set nomer=(select nomer from tab2 where im=im );
но ессно ругается что записей боле 1)
и вот так update tab1 set nomer=(select nomer from tab2 where im=im limit1);
Аналогично

Помогите, плиз!
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38769964
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bivilbiupdate tab1 set nomer=(select nomer from tab2 where im=im );

Как узнать к какой таблице относится im слева и im справа от = ? К tab1 или к tab2?
Добавь алиасы к таблицам и столбцам.
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38770160
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов,
update tab1 set nomer=(select nomer from tab2 where im=im );
Обновить в таблице1 (tab1) значение nomer = выбрать nomer если im(таблица2)=im(таблица1)
как то так
а как алиасы тогда вписать?
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38770179
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bivilbiПавел Лузанов,
Код: sql
1.
update tab1 set nomer=(select nomer from tab2 where tab1.im=tab2.im ); 


Обновить в таблице1 (tab1) значение nomer = выбрать nomer если im(таблица2)=im(таблица1)
как то так
а как алиасы тогда вписать?более точно дело не в алиасах, а в табличных префиксах .


но если tab2 совпадает с tab1 -- то в дело пойдут уже алиасы. (чтобы специфицировать, к какому кортежу относятся im по разные стороны сравнения)
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38770199
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqbivilbiПавел Лузанов,
Код: sql
1.
update tab1 set nomer=(select nomer from tab2 where tab1.im=tab2.im ); 


Обновить в таблице1 (tab1) значение nomer = выбрать nomer если im(таблица2)=im(таблица1)
как то так
а как алиасы тогда вписать?более точно дело не в алиасах, а в табличных префиксах .


но если tab2 совпадает с tab1 -- то в дело пойдут уже алиасы. (чтобы специфицировать, к какому кортежу относятся im по разные стороны сравнения)
Ага. Спасибо громадное!

А корректно будет вот так
update tab1 set nomer=(select DISTINCT nomer from tab2 where tab1.im=tab2.im ); ?
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38770386
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqболее точно дело не в алиасах, а в табличных префиксах
Да, конечно же. Просто я настолько привык, что имена таблиц значительно длиннее чем tab1,
что создание для них алиасов кажется обязательным. :-)

bivilbiА корректно будет вот так
update tab1 set nomer=(select DISTINCT nomer from tab2 where tab1.im=tab2.im ); ?
1. Нет гарантии, что подзапрос вернет ровно одну строку. На приведенных тестовых данных это так, но если в tab2 для Васи будет несколько строк с разными номерами, то будет ошибка.
2. В таком виде происходит update всех записей в tab1, даже тех, для которых в tab2 номер не найдется.
Нужно ли это? Если нет, то следует ограничить выборку для tab1

Впрочем если это разовое действие, то можно не заморачиваться.
...
Рейтинг: 0 / 0
Не правильно работает UPDATE
    #38770652
bivilbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузановqwwqболее точно дело не в алиасах, а в табличных префиксах
Да, конечно же. Просто я настолько привык, что имена таблиц значительно длиннее чем tab1,
что создание для них алиасов кажется обязательным. :-)

bivilbiА корректно будет вот так
update tab1 set nomer=(select DISTINCT nomer from tab2 where tab1.im=tab2.im ); ?
1. Нет гарантии, что подзапрос вернет ровно одну строку. На приведенных тестовых данных это так, но если в tab2 для Васи будет несколько строк с разными номерами, то будет ошибка.
2. В таком виде происходит update всех записей в tab1, даже тех, для которых в tab2 номер не найдется.
Нужно ли это? Если нет, то следует ограничить выборку для tab1

Впрочем если это разовое действие, то можно не заморачиваться.
Спасибо!!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не правильно работает UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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