2015-03-03 4 views
0

Я попытался использовать это, но он выдает синтаксическую ошибку.Как сохранить результат удаления переменной в mysql?

SET @deletedRepliesCount = (DELETE FROM reply WHERE type = 3 AND id IN (SELECT id FROM `like` 
WHERE commentId = :commentId)) + @deletedRepliesCount; 

«com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: У вас ошибка в вашем SQL синтаксиса, проверьте руководство, которое соответствует Вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с«DELETE FROM ответ WHERE тип = 3 и идентификатор IN (SELECT ID FROM like WHERE комментарий»в строке 1"

+0

Это было бы правильно. Оператор 'delete' не возвращает значение. Вы хотите использовать 'ROW_COUNT()'. –

ответ

1

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

DELETE FROM reply WHERE type = 3 AND id IN (SELECT id FROM `like` 
WHERE commentId = :commentId)); 
SET @deletedRepliesCount = SELECT ROW_COUNT() + @deletedRepliesCount 
0

Try ниже, как на link

SET @deletedRepliesCount := (DELETE FROM reply WHERE type = 3 AND id IN (SELECT id FROM like WHERE commentId = :commentId)) + @deletedRepliesCount; 
0
DROP TABLE IF EXISTS my_table; 

CREATE TABLE my_table 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,created DATETIME NOT NULL 
,modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
,deleted TINYINT NOT NULL DEFAULT 0 
); 

INSERT INTO my_table (created) VALUES 
('2015-01-01 00:00:00'), 
('2015-02-01 00:00:00'), 
('2015-03-01 00:00:00'), 
('2015-03-02 00:00:00'), 
('2015-03-02 00:00:00'), 
('2015-03-03 00:00:00'); 

UPDATE my_table SET deleted = 1 WHERE id > 3; 

SELECT * FROM my_table WHERE deleted = 1; 
+----+---------------------+---------------------+---------+ 
| id | created    | modified   | deleted | 
+----+---------------------+---------------------+---------+ 
| 4 | 2015-03-02 00:00:00 | 2015-03-03 14:56:11 |  1 | 
| 5 | 2015-03-02 00:00:00 | 2015-03-03 14:56:11 |  1 | 
| 6 | 2015-03-03 00:00:00 | 2015-03-03 14:56:11 |  1 | 
+----+---------------------+---------------------+---------+ 
Смежные вопросы