请教一条 SQL 语句,根据条件 SELECT 有还是没有,做执行其它的语句。。。

2020-10-17 01:25:19 +08:00
 qazwsxkevin
SELECT CASE 
       WHEN (SELECT count(1) FROM TestTable WHERE `FeedID`='666')>0
       THEN 
           'true' 
       WHEN  (SELECT count(1) FROM TestTable WHERE `FeedID`='666')=0
       THEN
           INSERT INTO TestTable (`FeedName`,`FeedID`) VALUES ('kkk','666')
       END 'Result';

我是想如果没有FeedID='666',就插入一条,

但如果有
我是想在'true'哪里再添加一些动作的,
只是现在想测试'false'的功能,都没能通过了,语法有错? 还是 CASE WHEN 不允许这样操作?

2884 次点击
所在节点    MySQL
8 条回复
xumng123
2020-10-17 08:34:26 +08:00
laravel orm withcount()
xlui
2020-10-17 10:03:16 +08:00
不谈有没有你希望的解决方案。
建议放到事务里做,SQL 不要附带复杂逻辑。
myevery
2020-10-17 10:14:21 +08:00
这种在程序里判断执行不香么
lihongming
2020-10-17 11:31:56 +08:00
@myevery 我猜这可能是面试题
qazwsxkevin
2020-10-17 11:49:58 +08:00
@xumng123 用的环境是 Python,没有 PHP,搜这个之前还不知道是什么,哈哈

@xlui,知道的,至于为什么,后面说

@myevery,有尴尬的困难。。

@lihongming 哇,这个问题能做面试题,那么可能是有难度了。。。


事情是自己折腾的,不是公司和商业环境,允许不遵守一些事情乱来,是这样的:要做这个操作,是在程序块里的小节点,如果按我低水平的 Python 的做法,完成整个最后需求,先 SELECT,产生 10 来个本地变量,然后本地算法对比,再做决定,同时握手会产生 10 来个短链接,反正服务器也不忙,弄个 MySQL 语句扔过去,能省很多事,同时自己可以学习一下 SQL 的玄妙。。。 ,在 SQL 语句里能 IF ELSE,还真是省心的,SQL 的操作后面改动也不会很大。
如果按上面的大哥提到可以做面试题,那么看来还是很难。。。
nuistzhou
2020-10-17 15:00:43 +08:00
卧槽还能这么操作吗? select 嵌套 insert ?
vone
2020-10-17 16:55:16 +08:00
zhangysh1995
2020-10-19 13:43:11 +08:00
按照语法,THEN 只可以填一个一行一列的 relation (一个值),scalar query 满足这个条件,但是 false 分支 insert 不满足。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/715817

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX