Простой вопрос по mysql

Dimoks

Адмін
Статус: Offline
Реєстрація: 15.08.2003
Повідом.: 70269
Простой вопрос по mysql

Есть таблица post
Её структура примерно такаая

Код:
postid	 int(10) unsigned	        17121349		
threadid	 int(10) unsigned	1290841	
username	 varchar(100)		me_gun	
userid	 int(10) unsigned		0

Как мне прогнать всю таблицу post на условие
если username=me_gun
тогда делать userid=406

чтобы получить

Код:
postid	 int(10) unsigned	        17121349		
threadid	 int(10) unsigned	1290841	
username	 varchar(100)		me_gun	
userid	 int(10) unsigned		406
 
Видимо что-то типа
Код:
Update post set userid=406 where username = 'me_gun'
должно помочь. Это должно обновить все записи, даже там где userid был не 0.
Можно сделать так
Код:
Update post set userid=406 where username = 'me_gun' and userid=0

Также для безопасности можно вначале сделать
Код:
select count(*) from post where username = 'me_gun' and userid=0
посмотреть число (сколько записей нужно исправить), а потом

Код:
Update post set userid=406 where username = 'me_gun' and userid=0 [b]LIMIT то-самое-число[/b]
Это в случае какой-то обидной ошибки в запросе запортит только часть данных таблицы

См. также
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
Это в случае какой-то обидной ошибки в запросе запортит только часть данных таблицы

Полная чушь. Либо правильный запрос либo нет. Если ошибся никакое ограничение не поможет. Можно попортить тыщу записей и ничего страшного а можно одну с каким нибудь паролем и все - жопа.
Зачем давать идиотские советы - вместо правильно решить задачу применять сомнительный костыль на случай ее неправильного решения
 
Как мне прогнать всю таблицу post на условие
если username=me_gun
тогда делать userid=406

Код:
UPDATE [post]
	SET [userid] = 406
	WHERE [username] = 'me_gun'

PS: можно еще на всякий такой запрос сделать:

Код:
DELETE FROM [post] 
	WHERE [username]='caballero'

:D
 
Код:
UPDATE [post]
	SET [userid] = 406
	WHERE [username] = 'me_gun'

PS: можно еще на всякий такой запрос сделать:

Код:
DELETE FROM [post] 
	WHERE [username]='caballero'

:D

+1, человек разложил всё по полочкам, но даже на это найдётся кабаллеро которому всё не так... страна вечно недовольных, блеать.
 
спасибо большое!!! всё получилось
а с русским как быть? так прокатит:
update post set userid='7702' where username='Танкред';
 
спасибо большое!!! всё получилось
а с русским как быть? так прокатит:
update post set userid='7702' where username='Танкред';
прокатит, если ты из phpmyadmin делать будешь, с клиентским чарсетом 1251.
у меня из консоли mysql-клиента - не получится, локаль на серваке не 1251.
свисти в аську, если что.
 
включил 1251 в phpmyadmin
update post set userid='7702' where username='Танкред';
#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

:(
 
я когда в 1251 захожу в таблицу user то вместо 'Танкред' вижу 'Г’Г Г*êðåä'
 
консоль:
mysql> select username from user where userid=277893;
+-----------+
| username |
+-----------+
| ��������� |
+-----------+
1 row in set (0.10 sec)
- это мой клон Чебурашко.

База так вообще создана в iso8859-1 (latin1). руки отрывать...

в phpmyadmin сделать 'select username from user where userid=<нужный_uid>', скопировать в буфер полученный username и потом его вставлять из буфера в нужное место .. :(
 
Останнє редагування:
в phpmyadmin сделать 'select username from user where userid=<нужный_uid>', скопировать в буфер полученный username и потом его вставлять из буфера в нужное место .. :(
Это очень оригинальная идея скопировать в буфер такие значки:
+-----------+
| username |
+-----------+
| ��������� |
+-----------+
1 row in set (0.10 sec)

Вложенный запрос надо написать.
 
Назад
Зверху Знизу