情景如下:
"今日前端忽然说句, 我需要做个判断, 不能重复收藏, 我犹如颈有寒冰不寒而栗, 于是思考我该怎么做?为什么她都思考到了我没有思考到这是我的工作啊"
思考后得到三种解决方案:
1. 两条sql, 然后通过第一条sql判断
2. 一条sql, insert 中使用exists方式(暂时不会,下面讲解)
3. 存储过程
后请教公司一同事,得到结论, 如果是两个客户端同时操作就采用存储过程, 如果不是, 那么第一种第二种都ok, 后决定采用方案2
INSERT INTO table(column1,column2,column3 ...columnN) SELECT value1,value2,value3 ...valueN FROM dual WHERE NOT EXISTS( SELECT * FROM table WHERE value = ? );
sql结构
INSERT INTO content ( detail, status, beginTime, endTime) SELECT @detail, 1, NULL, NULL FROM DUAL WHERE NOT EXISTS( SELECT contentId FROM content WHERE detail[email protected]);
sql示例
dual是为了构建查询语句而存在的表,Oracle中很常见,配合INSERT ... SELECT构建成我们需要的表,并指定了数据项.
EXISTS通过这个判断是否存在的函数,就免去了我们做IF-ELSE的冗繁操作
发现自己的sql还有漫长的路要走...
原文地址:https://www.cnblogs.com/renfanzi/p/8340967.html
时间: 2024-10-29 17:18:29