2010-05-01 3 views
1

UPDATE statistics '
SET money = money + '$money'
WHERE member_id IN
((SELECT member_id FROM races WHERE l_id = '$mem_id'), $other_id)WHERE ID IN не работает в UPDATE

Что случилось с этим? Я хочу получить все member_ids из рас, а также включить в member_id $ other_id. Без $ other_id это работает.

Кстати, это дает мне ошибку «Подзапрос возвращает более 1 строки».

ответ

7

Попробуйте с:

UPDATE statistics 
    SET money = money + $money 
WHERE member_id IN (
     SELECT member_id 
     FROM races 
     WHERE l_id = $mem_id 
     ) 
    OR member_id = $other_id 

и предложение - для int столбцов типа не используют одинарные кавычки.

+0

Превосходно! Прекрасно работает. Большое спасибо. :) –

+0

«для столбцов типа int не используются апострофы». Я защитил его функцией addslashes(), поэтому я думаю, что все в порядке, не так ли? –

+0

Для строк - хорошо, но я предпочитаю 'mysql_escape_string()'. Если вы работаете с ints, float и т. Д. - бросаете их '$ id = (int) $ _GET ['id'];' (или '(float)' и т. Д.), И этого будет достаточно. – hsz

4

подзапрос возвращает member_id и $ other_id

+0

И как я могу заставить его работать только с одним запросом? –

+1

hsz уже ответил –

4

Другой способ сделать это:

(SELECT member_id FROM races WHERE l_id = '$mem_id' 
UNION 
SELECT $other_id) 
Смежные вопросы