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

slavon-x86

Well-Known Member
18.12.2005
215
0
#1
Есть таблица "table1". В ней две колонки "n1" и "n2".

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


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

slavon-x86

Well-Known Member
18.12.2005
215
0
#3
А можно ли одним запросом сделать такое:
Если в столбце "n1" есть "33", то заменить эту строку. А если числа нету, то добавить строку n1=99, n2='vv' в таблицу !?
 

slavon-x86

Well-Known Member
18.12.2005
215
0
#5
А можно одним запросом создать таблицу и добавить запись. Если да, то как ?
 
O

ooo

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

SOFTOBZOR.ru

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

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

ooo

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

pushkin

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

UPDATE test1 SET fld1 = CONCAT(fld1, 's') WHERE id = 6;
SELECT * FROM test1