› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
qazwsxkevin
V2EX  ›  MySQL

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

  •  
  •   qazwsxkevin · Oct 17, 2020 · 3708 views
    This topic created in 2175 days ago, the information mentioned may be changed or developed.
    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 不允许这样操作?

    8 replies  •  2020-10-19 13:43:11 +08:00
    xumng123
        1
    xumng123  
       Oct 17, 2020 via iPhone
    laravel orm withcount()
    akiakiseofficial
        2
    akiakiseofficial  
       Oct 17, 2020 via iPhone
    不谈有没有你希望的解决方案。
    建议放到事务里做,SQL 不要附带复杂逻辑。
    myevery
        3
    myevery  
       Oct 17, 2020
    这种在程序里判断执行不香么
    lihongming
        4
    lihongming  
       Oct 17, 2020 via iPhone
    @myevery 我猜这可能是面试题
    qazwsxkevin
        5
    qazwsxkevin  
    OP
       Oct 17, 2020
    @xumng123 用的环境是 Python,没有 PHP,搜这个之前还不知道是什么,哈哈

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

    @myevery,有尴尬的困难。。

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


    事情是自己折腾的,不是公司和商业环境,允许不遵守一些事情乱来,是这样的:要做这个操作,是在程序块里的小节点,如果按我低水平的 Python 的做法,完成整个最后需求,先 SELECT,产生 10 来个本地变量,然后本地算法对比,再做决定,同时握手会产生 10 来个短链接,反正服务器也不忙,弄个 MySQL 语句扔过去,能省很多事,同时自己可以学习一下 SQL 的玄妙。。。 ,在 SQL 语句里能 IF ELSE,还真是省心的,SQL 的操作后面改动也不会很大。
    如果按上面的大哥提到可以做面试题,那么看来还是很难。。。
    flgn88
        6
    flgn88  
       Oct 17, 2020 via iPhone
    卧槽还能这么操作吗? select 嵌套 insert ?
    zhangysh1995
        8
    zhangysh1995  
       Oct 19, 2020
    按照语法,THEN 只可以填一个一行一列的 relation (一个值),scalar query 满足这个条件,但是 false 分支 insert 不满足。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:52 · PVG 19:52 · LAX 04:52 · JFK 07:52
    ♥ Do have faith in what you're doing.