2016-01-10 37 views
1

問題很簡單,但似乎每次我在mysql語法中做錯了什麼。 我想在字符串字段後的表中進行搜索。如果這個字段存在,我會增加apparition的數量。如果不存在,我會用它添加一個新行。 我想寫一個查詢,我將與jdbc或hibernate一起使用。 我在網站上看了很多例子,但我狡猾地說,我在MySQL語法中做了一些錯誤。如何在mysql查詢中使用IF條件

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 search_condition THEN STATEMENT_LIST [ELSEIF search_condition THEN 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

如果子句作爲select的一部分無效。只需爲更新(使用where子句)編寫兩個語句,併爲插入寫入兩個語句(再次使用where) – amdixon

回答