MySQL:如果存在,获取ID,否则插入并返回ID
我正在尝试构造一个查询,该查询将返回指定名称记录的ID,或者如果它不存在,则插入名称并返回ID。(ID是一个自动递增字段,名称将不会有重复项,而是一个varchar 1024,因此它不能有唯一属性) 我的SQL查询应该类似于:MySQL:如果存在,获取ID,否则插入并返回ID,mysql,select,if-statement,insert,Mysql,Select,If Statement,Insert,我正在尝试构造一个查询,该查询将返回指定名称记录的ID,或者如果它不存在,则插入名称并返回ID。(ID是一个自动递增字段,名称将不会有重复项,而是一个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
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…但我不确定从哪里开始)
示例名称表:
+----+----------+
| ID | NAME |
+----+----------+
| 1 | ANDY |
| 2 | BOB |
| 3 | CARL |
+----+----------+
我是否应该将其拆分为多个查询?拆分您试图完成的任务:
插入操作后,可以使用SELECT LAST_INSERT_ID()获取新插入行的ID 执行插入忽略,然后执行选择。虽然我想知道是否有办法跳过select。因为我不能使用unique(因为insert varchar>1000不能使用unique),那么insert ignore将只添加重复项。您可以将其拆分为两个查询。一个用于在记录不存在时插入,另一个用于实际获取id。在单个查询中似乎无法做到这一点,因此我将拆分它