2009-08-15 2 views
2

у меня есть два запрос первых:Update внутри ДЕЛУ (MySQL)

SELECT 
    players.username AS username, 
    tmp_player_operations.id AS tmp_id, 
    tmp_player_operations.operation_type AS operation_type, 
    tmp_player_operations.veryfication_code AS veryfication_code, 
    tmp_player_operations.expiration_date AS expiration_date, 
    tmp_player_operations.used AS used 
FROM 
    players LEFT OUTER JOIN tmp_player_operations 
    ON players.id = tmp_player_operations.player_id 
WHERE 
tmp_player_operations.veryfication_code = '3c3c4375086fbcbc1cef938a0bfabbb9' 

второй:

UPDATE 
    players LEFT JOIN tmp_player_operations 
    ON players.id = tmp_player_operations.player_id 
SET 
    tmp_player_operations.used = 1, 
    players.active = 1 
WHERE 
    tmp_player_operations.id = 8 

Теперь я хотел бы сделать это обновление внутри выбора, я имею в виду что-то вроде:

(CASE 
    WHEN 
     tmp_player_operations.used = 0 
     THEN 
      UPDATE.... 
      AND 'updated' 
    ELSE 
     'not updated' 
END) AS something 

что-то вроде этого возможно?

ответ

1

Нет, это невозможно. Запрос может быть либо SELECT, либо UPDATE, но не оба.

Возможно, вы можете использовать хранимую процедуру, чтобы сделать один вызов базы данных как для обновления, так и для выбора, но это все равно будет два запроса (но это приложение будет видеть только один, сохраненный вызов proc). Chapter 18 of the MySQL manual содержит подробную информацию о хранимых процедурах.

Возможно, вам стоит немного подружиться и спросить нас, как выполнить свою фактическую цель?

+0

Я сделаю это с сохраненным proc, я только хотел узнать, возможно ли это, поэтому ваш ответ мне помог. Я просто хотел сделать одно соединение mysql вместо двух. – Cfaniak

+1

Вы можете выдавать несколько запросов на одно соединение, не зная, зачем вам нужно два подключения. – derobert

0

Обновить дополнительное поле со значением 1. Затем запустите еще один запрос и выберите "Updated", где это поле равно единице.

Смежные вопросы