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

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

  1. slavon-x86

    slavon-x86 Well-Known Member

    Регистрация:
    18 дек 2005
    Сообщения:
    216
    Симпатии:
    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 Гость

    Update table1 set n1=99, n2='vv' where n1=33;
     
  3. slavon-x86

    slavon-x86 Well-Known Member

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

    Barmutik Гость

    Одним нет...
     
  5. slavon-x86

    slavon-x86 Well-Known Member

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

    ooo Гость

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

    SOFTOBZOR.ru Гость

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

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

    ooo Гость

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

    pushkin Гость

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

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

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