• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы slavon-x86
  • Дата начала
S

slavon-x86

Есть таблица "table1". В ней две колонки "n1" и "n2".

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


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

slavon-x86

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

slavon-x86

А можно одним запросом создать таблицу и добавить запись. Если да, то как ?
 
O

ooo

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

SOFTOBZOR.ru

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

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

ooo

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

pushkin

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

UPDATE test1 SET fld1 = CONCAT(fld1, 's') WHERE id = 6;
SELECT * FROM test1
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!