如何在mysql查询中使用IF条件

时间:2016-01-10 07:14:49

标签: mysql hibernate

问题很简单,但似乎每次我在mysql语法中做错了。    我想在String字段后搜索表。如果此字段存在,我将增加显示的数量。如果不存在,我将添加一个新行。   我正在尝试编写一个查询,我将使用jdbc或hibernate。   我在网站上看了很多例子,但我发现我在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)

我使用MYSQL教程中的IF条件: IF search_condition THEN statement_list     [ELSEIF search_condition THEN statement_list] ......     [ELSE statement_list] 结束如果

所以我的查询如下:

    **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

有人可以告诉我哪里错了吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

if syntax只能用作存储过程的一部分。

对于此用例,可以使用insert on duplicate key update。看看this SQL Fiddle。