问题很简单,但似乎每次我在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
有人可以告诉我哪里错了吗? 谢谢!
答案 0 :(得分:1)
if syntax只能用作存储过程的一部分。
对于此用例,可以使用insert on duplicate key update。看看this SQL Fiddle。