Форум: "Базы";
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];
ВнизОператор UPDATE в SQL Найти похожие ветки
← →
Garmahis (2002-01-30 20:00) [0]Мне надо заменить значения в одной строке таблицы на другие. Как я понимаю это делается оператором UPDATE но в нем требуется после SET указать колонки в таблице, которые надо заменить у меня их 59 неужели мне прийдётся все их прописывать? Нельзяли это сделать как-то проще?
← →
Mikhail (2002-01-30 20:10) [1]Странная таблица какая-то. Скольо колонок нужно столько и меняй.
← →
Garmahis (2002-01-30 23:13) [2]Так мне надо заменять во всех и названия там не самые короткие, это чуть ли не пол страницы одних названий набивать. Нельзя ли одним оператором обьяснить, что мне надо во всех колонка проихвести замену ну вроде символа "*" в SELECT.
← →
TSV (2002-01-31 10:17) [3]А тебе что, во всех колонках надо поменять на одно и то же значение?
← →
Fay (2002-01-31 15:58) [4]...Нельзяли это сделать как-то проще?
Нет!
← →
Turalyon (2002-01-31 16:29) [5]После SET необходимо перечислить все колонки, которые будешь обновлять, если тебе необходимо обновить все 59 колонок придется писать все 59... если только часть, то и перечислять надо только те, что будешь обнавлять.
← →
Garmahis (2002-01-31 23:46) [6]Жаль, что прийдётся так мучиться. Но это я решу. Теперь у меня новая проблема: по этому же вопросу. У меня примерно такая строка
UPDATE DB1 SET A=(SELECT A FROM DB2 WHERE ID IN(SELECT ID FROM DB2) AND UID NOT IN(SELECT UID FROM DB2)), A1=(SELECT A2 FROM DB2 WHERE ID IN(SELECT ID FROM DB2) AND UID NOT IN(SELECT UID FROM DB2)),A3=...,A58=(...) WHERE ID IN(SELECT ID FROM DB2) AND UID NOT IN(SELECT UID FROM DB2)
Здесь ID это номер присвоенный каждому обьекту из множества описанному в таблице, а UD уникальный номер присваеваемый каждой строке и меняющийся при её редактировании. Соответствено в первой базе должны изменяться значения изменённые во второй базе, но встаёт проблема - если было изменено две и более строки то значения в первой найденной строке он пытается заменить на масив всех изменённых значений в этой колонке. Как сделать, что бы он заменял значения последовательно?
← →
Biocron (2002-02-01 00:03) [7]Если у тебя данные базы не более 10 000 записей мне так кажется можно создать сложный запрос на выборку и создане таблицы
уж очень запросик у тебя страшный выходит
← →
Garmahis (2002-02-01 09:11) [8]Записей много больше 10000. Дело в том чтоэто будет обновляться таблица на сервере с нескольких сотен удалённых компов.
← →
SergSuper (2002-02-01 10:22) [9]Вы уверены что Ваш запрос правильно работает?
Надо писать примерно так:
UPDATE DB1 SET A= a2.A, A1=a2.A1
from DB1 a1, DB2 a2
where a1.ID=a2.ID and a1.UID<>a2.UID
Не уверен что я правильно понял что Вам надо, но в любом случае Ваш запрос написан неграмотно.
← →
Garmahis (2002-02-03 01:29) [10]Запрос правильный просто я писал его в общем виде :)
Я решил эту проблему если кому-то интересно могу сказать, что с помощью курсора. Команда FETCH могу теперь подробнее про неё рассказать если кинтересно.
← →
Sinclair Evilguest (2002-02-03 10:30) [11]Garmahis, слушай SergSuper"а - он дело говорит. Не надо курсоров! Так - быстрее всего. Я имею в виду, сервер выполнит это быстрее всего. Тебе это важно, т.к. речь идет про несколько сот компов...
← →
Ujin_m (2002-02-03 12:12) [12]> SergSuper -> Naskolko ia ponimaiu tvoi update ne tojdestvennen ishodnomu. Prodlema v tom chto uslovie vupolniaetsia u tebia dlia odnoi i toi je zapisi v DB2 a ne exists v ishodnoi.
← →
Garmahis (2002-02-03 20:22) [13]Он ошибается так как a2.A и a2.A1... всё это не одно значение а массив значений так как он содержит все значения строк колонки, где были произведенны изменения.
← →
kva (2002-02-04 08:34) [14]Вопрос попутно к Biocron и всем.При чем тут ограничение на 10000?
Иначе говоря, существуют ли ограничения на количество
обновляемых записей для конкретного сервера?
В частности, MSSQL 7.0?
Когда обновлять записи курсором оптимальнее, чем UPDATE или INSERT?
Вопрос не праздный, дело в том, что у меня запрос типа
INSERT ...
SELECT...
на ~ 20000 записей выполняется страшно долго (несколько минут или
десятков минут), хотя внутренний SELECT выполняется (если запускать отдельно) около 5 секунд
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c