MySQL:如果存在则获取ID,否则插入并返回ID

时间:2014-03-21 02:49:24

标签: mysql select if-statement insert

我正在尝试构造一个将返回指定NAME记录的ID的查询,或者如果它不存在,则插入名称并返回ID。 (ID是自动增量字段,NAME不会有重复项,但是varchar是1024,因此它不能具有唯一属性)

我的SQL查询应该是这样的:

IF EXISTS(SELECT 1 FROM NAMES WHERE NAME='DAVE')
THEN
    SELECT FROM NAMES WHERE NAME='DAVE'
ELSE
    INSERT INTO NAMES(`NAME`) VALUES ('DAVE')
ENDIF;

(显然这不是有效的SQL ......但我不知道从哪里开始)

示例NAMES表:

+----+----------+
| ID | NAME     |
+----+----------+
| 1  | ANDY     |
| 2  | BOB      |
| 3  | CARL     |
+----+----------+

我应该将其拆分为多个查询吗?

1 个答案:

答案 0 :(得分:0)

拆分你想要达到的任务:

  1. 首先检查是否存在具有特定名称的行

  2. 如果是,请选择整行并检索id,如果没有将数据插入db。

  3. 您可以在插入操作后使用SELECT LAST_INSERT_ID()来获取新插入行的ID。