1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Муsql > замена записи в таблице

Тема в разделе "Базы данных и администрирование", создана пользователем slavon-x86, 15 окт 2006.

  1. slavon-x86

    slavon-x86 Well-Known Member

    Репутация:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    215
    Симпатии:
    0
    Есть таблица "table1". В ней две колонки "n1" и "n2".

    ============
    = n1 ==||== n2 =
    ============
    = 31 ==||== bb =
    = 33 ==||== bg =
    = 24 ==||== fb =
    = 64 ==||== hb =
    = 83 ==||== mb =
    = 04 ==||== bc =


    Нужно: если колонка n1 содержит число 33, то заменить это число на 99 и n2 в этой же строке на vv
     
  2. ooo

    ooo Гость

    Репутация:
    0
    Update table1 set n1=99, n2='vv' where n1=33;
     
  3. slavon-x86

    slavon-x86 Well-Known Member

    Репутация:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    215
    Симпатии:
    0
    А можно ли одним запросом сделать такое:
    Если в столбце "n1" есть "33", то заменить эту строку. А если числа нету, то добавить строку n1=99, n2='vv' в таблицу !?
     
  4. Barmutik

    Barmutik Гость

    Репутация:
    0
    Одним нет...
     
  5. slavon-x86

    slavon-x86 Well-Known Member

    Репутация:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    215
    Симпатии:
    0
    А можно одним запросом создать таблицу и добавить запись. Если да, то как ?
     
  6. ooo

    ooo Гость

    Репутация:
    0
    Создать и добавить одним запросом нельзя. Можно создать таблицу со структурой ,как у другой таблицы, и с записью , как там же.
    create table t1 as select * from t2 .
     
  7. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

    Репутация:
    0
    Если в столбце "n1" есть "33", то заменить эту строку.
    А если числа нету, то добавить строку n1=99, n2='vv' в таблицу !?

    Сначала делаеш запрос к таблице:
    дальше циклиш запрос и в нем менаяш
    if(n1!="" and n1="33")
    {
    update
    }
    else
    {
    insert
    }
     
  8. ooo

    ooo Гость

    Репутация:
    0
    Только в цикле менять нельзя , а то навставляется куча записей по неравенству. Сначала проверяется существует n1=33 или нет, а только после этого update или insert. Можно без цикла.
     
  9. pushkin

    pushkin Гость

    Репутация:
    0
    Все можно сделать одним запросом - так называемым батчем. Необходимо просто все подзапросы (SELECT, UPDATE, CREATE,...) разделять точкой с запятой. Можно также использовать хранимую процедуру (Stored Procedure). Вот пример:

    UPDATE test1 SET fld1 = CONCAT(fld1, 's') WHERE id = 6;
    SELECT * FROM test1
     
Загрузка...

Поделиться этой страницей