2015-05-27 67 views
0

我期望“标记”我的SQLite数据库的条目。这下面的命令将从other_table添加新条目:插入并从其他表和附加值中选择

INSERT OR IGNORE INTO landing_table (idx) 
SELECT gidx FROM other_table 

不过,我想只更新不存在landing_table那些在other_table存在项具有较高的计算值设置为1。

INSERT OR IGNORE INTO landing_table idx (idx, computed) 
SELECT gidx FROM other_table 
AND SET computed=1 

显然这是不正确的。我想在单个插入语句中执行此操作,而不是插入和将来的UPDATE语句。

+0

你的第二句话令人困惑;你是否想要插入不存在的行,但是如果它们存在,那么将'computed'设置为'1'? (还有什么是错误的2语句+交易?) –

+0

@ColonelThirtyTwo是的,这是正确的。如果它们存在,我想跳过行,但是如果它们不行,我想插入它们,并设置'computed = 1'。我目前在两次交易中都这样做,但速度很慢,因为我必须重新搜索表格以找到我插入的表格。我希望在一个声明中这样做。可能吗? – Hooked

回答

1

computed选择一个常量值。

INSERT OR IGNORE INTO landing_table idx (idx, computed) 
SELECT gidx, 1 FROM other_table 
+0

哦!这是合法的?因为我认为(阅读文档)选择中的每个项目必须是列,所以我尝试了一些疯狂的语法。谢谢! – Hooked

相关问题