2016-01-10 4 views
1

Проблема проста, но кажется, что каждый раз я делаю что-то неправильно в синтаксисе mysql. Я хочу искать в таблице после поля String. Если это поле существует, я увеличим количество явлений. Если этого не существует, я добавлю новую строку. Я пытаюсь написать запрос, который я буду использовать с jdbc или hibernate. Я рассматриваю множество примеров на сайте, но я понимаю, что я делаю что-то неправильно в синтаксисе mysql.Как использовать условие IF в запросе mysql

For the table: 

mysql> select * from phrase; 
+----+---------------+-------------------+ 
| id | phrase_string | apparition_number | 
+----+---------------+-------------------+ 
| 1 | phrase 1  |     2 | 
| 2 | phrase 2  |     1 | 
| 3 | phrase 3  |     5 | 
| 4 | phrase 4  |     6 | 
+----+---------------+-------------------+ 
4 rows in set (0.00 sec) 

Я использую условие IF из учебника MYSQL: IF THEN search_condition statement_list [ELSEIF search_condition ТОГДА statement_list] ... [ELSE statement_list] END IF

Так что мой запрос выглядит следующим образом:

**mysql> IF SELECT * FROM phrase WHERE phrase_string="phrase 1" THEN 
     -> UPDATE phrase SET apparition_number=apparition_number+1 
     -> ELSE 
     -> INSERT INTO phrase VALUES(NULL,"phrase 1",1) 
     -> END IF;** 

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF SELECT * FROM phrase WHERE phrase_string=" 
phrase 1" THEN 
UPDATE phrase SET ap' at line 1 

Может ли кто-нибудь сказать мне, где я ошибаюсь? Спасибо!

+0

, что если предложение недействительно как часть выбора. просто напишите два утверждения один для обновления (с предложением where) и один для вставки (снова с где) – amdixon

ответ

1

Если syntax может использоваться только как часть хранимой процедуры.

Для этого варианта использования можно использовать insert on duplicate key update. Посмотрите на this SQL Fiddle.

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