【问题标题】:IF NOT EXISTS in SQLite如果 SQLite 中不存在
【发布时间】:2012-09-12 15:32:06
【问题描述】:

如果 devID 不存在,我如何检查 devID 是否已经存在,然后插入以下查询:

INSERT  into profiles (devID,alert) VALUES ("ff",1) ;

PS:我已经在 SO 中看到this 解决方案,但不确定如何根据该解决方案修改我的查询。

感谢任何帮助。

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:
    INSERT INTO profiles (devID, alert)
    SELECT 'ff', 1
    WHERE NOT EXISTS (SELECT 1 FROM profiles WHERE devID = 'ff');
    

    【讨论】:

      【解决方案2】:

      试试这个:

      INSERT OR IGNORE INTO profiles (devID,alert) VALUES ("ff",1) ;
      

      INSERT syntax中所述:

      【讨论】:

      • 我看不到这里对'ff'的重复进行的检查
      • @user1400538 你需要在 devID 上有一个唯一的索引才能工作,它基本上说“如果它不与现有数据/索引冲突则插入,否则忽略”。
      【解决方案3】:

      根据您的链接:

      INSERT INTO profiles (devID,alert)
      SELECT "ff", 1
      WHERE NOT EXISTS (SELECT 1 FROM profiles WHERE devID ="ff");
      

      【讨论】:

      • 如果设备具有不同的alert 值,这可能会为设备插入多行,这可能不太正确。
      • 你说得对 - 我没有读过只有当身份存在时的部分,我认为他希望所有组合都不存在。已编辑
      猜你喜欢
      • 2010-10-06
      • 2021-10-14
      • 2015-03-31
      • 1970-01-01
      • 2013-07-23
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多