|
|
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Пытаюсь выполнить вот такой скрипт 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" В чем может быть ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 08:09:50 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
bivilbi, PgAdmin'ом не пользуюсь, но первая мысль, что вы цепляетесь за ответ выданный после отработки последней команды из трёх. поселектите и проверте действительно ли ничего не изменилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 08:47:20 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Lonepsycho, Смотрел на результат. Меняется только первая запись. Пробовал и в EMS SQl manager ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 10:17:11 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Lonepsycho, Хотя когда выполняю похожий запрос но с другим столбцом (не name, а desc) set desc='test1' where id='453534' то все отрабатывает корректно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 10:20:46 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
bivilbi, с большими/маленькими буквами в айди не мог что-нибудь напутать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 11:57:10 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Constanzo, нее. синтаксис четко соблюдаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2014, 12:16:45 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Продолжу, что бы не открывать новую тему Есть две таблицы с одинаковыми столбцами 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); Аналогично Помогите, плиз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 07:37:21 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
bivilbiupdate tab1 set nomer=(select nomer from tab2 where im=im ); Как узнать к какой таблице относится im слева и im справа от = ? К tab1 или к tab2? Добавь алиасы к таблицам и столбцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 10:01:40 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Павел Лузанов, update tab1 set nomer=(select nomer from tab2 where im=im ); Обновить в таблице1 (tab1) значение nomer = выбрать nomer если im(таблица2)=im(таблица1) как то так а как алиасы тогда вписать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 11:52:38 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
bivilbiПавел Лузанов, Код: sql 1. Обновить в таблице1 (tab1) значение nomer = выбрать nomer если im(таблица2)=im(таблица1) как то так а как алиасы тогда вписать?более точно дело не в алиасах, а в табличных префиксах . но если tab2 совпадает с tab1 -- то в дело пойдут уже алиасы. (чтобы специфицировать, к какому кортежу относятся im по разные стороны сравнения) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:05:37 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
qwwqbivilbiПавел Лузанов, Код: sql 1. Обновить в таблице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 ); ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:16:37 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
qwwqболее точно дело не в алиасах, а в табличных префиксах Да, конечно же. Просто я настолько привык, что имена таблиц значительно длиннее чем tab1, что создание для них алиасов кажется обязательным. :-) bivilbiА корректно будет вот так update tab1 set nomer=(select DISTINCT nomer from tab2 where tab1.im=tab2.im ); ? 1. Нет гарантии, что подзапрос вернет ровно одну строку. На приведенных тестовых данных это так, но если в tab2 для Васи будет несколько строк с разными номерами, то будет ошибка. 2. В таком виде происходит update всех записей в tab1, даже тех, для которых в tab2 номер не найдется. Нужно ли это? Если нет, то следует ограничить выборку для tab1 Впрочем если это разовое действие, то можно не заморачиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:40:35 |
|
||
|
Не правильно работает UPDATE
|
|||
|---|---|---|---|
|
#18+
Павел Лузановqwwqболее точно дело не в алиасах, а в табличных префиксах Да, конечно же. Просто я настолько привык, что имена таблиц значительно длиннее чем tab1, что создание для них алиасов кажется обязательным. :-) bivilbiА корректно будет вот так update tab1 set nomer=(select DISTINCT nomer from tab2 where tab1.im=tab2.im ); ? 1. Нет гарантии, что подзапрос вернет ровно одну строку. На приведенных тестовых данных это так, но если в tab2 для Васи будет несколько строк с разными номерами, то будет ошибка. 2. В таком виде происходит update всех записей в tab1, даже тех, для которых в tab2 номер не найдется. Нужно ли это? Если нет, то следует ограничить выборку для tab1 Впрочем если это разовое действие, то можно не заморачиваться. Спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 16:27:54 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38616311&tid=1998443]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
235ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 545ms |

| 0 / 0 |
