【发布时间】:2014-04-28 06:11:46
【问题描述】:
我正在尝试构建一个查询,该查询将返回指定 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 |
+----+----------+
我应该把它分成多个查询吗?
【问题讨论】:
-
执行插入忽略,然后执行选择。虽然我想知道是否有办法跳过选择。
-
因为我不能使用唯一(因为 varchar > 1000 不能使用唯一),那么插入忽略只会添加重复项
-
您可以将其拆分为两个查询。一个用于在记录不存在时插入,另一个用于实际获取 id。
标签: mysql select if-statement insert