2015-05-27 62 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

相關問題