MySQL insert into where 去重复

这儿有一个order表,脚本我放在最后,
我想在insert之前判断order_name是否存在,不存在则保存,存在则不保存。
但是MySQL insert语句是不能跟where子句的,像这样:

INSERT INTO `order` (order_name) VALUES ('订单3') WHERE NOT EXISTS (SELECT order_id FROM `order` WHERE order_name = '订单3');

会报错,

INSERT INTO `order` (order_name) VALUES ('订单3') WHERE NOT EXISTS (SELECT order_id FROM `order` WHERE order_name = '订单3')
> 1064 - 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 'WHERE NOT EXISTS (SELECT order_id FROM `order` WHERE order_name = '订单3')' at line 1
> 时间: 0s

我们可以修改成insert select语句:

INSERT INTO `order` (order_name) SELECT '订单3' FROM DUAL WHERE NOT EXISTS (SELECT order_id FROM `order` WHERE order_name = '订单3');

这样就能实现我们的需求。

SQL脚本

-- ----------------------------
-- Table structure for order
-- ----------------------------
DROP TABLE IF EXISTS `order`;
CREATE TABLE `order`  (
  `order_id` int NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `order_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '订单名称',
  `order_amount` int NULL DEFAULT NULL COMMENT '订单金额',
  PRIMARY KEY (`order_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '订单' ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Records of order
-- ----------------------------
INSERT INTO `order` VALUES (1, '订单1', 70);
INSERT INTO `order` VALUES (2, '订单2', 80);
INSERT INTO `order` VALUES (3, '订单3', 90);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值