2012-10-16 46 views
0

我有兩張桌子。如何在MySQL中做條件INSERT?

資產表

| AID | NAME | 
    | 1234 | item1| 

項目表

| BID | ITEM | 
    |  |  | 

問題:只有當同樣的數據如何插入數據到項目表一世想要插入資產表中嗎?或者甚至有可能?假設我只能在資產表AID值(1234)存在時才能插入項目表BID值(1234)。 我試着這樣做:

  1. INSERT INTO '項目'( 'BID')VALUES(1234),其中 'item'.BID =' assets'.AID
+0

什麼應該作爲'ITEM'值插入呢? ''item1'字符串?另外,您是否希望將這個'WHERE'檢查僅應用於單個操作,還是希望將「assets」表作爲整體來複制? – raina77ow

回答

0

你可以'WHEREINSERT語句不使用,因爲mysql不支持它。 只要刪除WHERE部分,它應該工作。

但是,您必須分別檢查數據是否存在於其他表格中(或在子查詢中)。

+0

但我想要的是,只有當值的AID(主鍵)出現在資產表中,那麼只有我可以在項目表中插入相同的數據。我不知道如何去檢查使用兩個表 –

0

您可以使用動態SQL並稍後執行它,但這很醜陋。只要做一個IF條件。如果記錄存在於Value中,則運行插入,否則,不要。

嘗試這樣:

(SELECT Count(*) FROM Value WHERE BID = '1234') > 0 
    --your insert-- 
1
INSERT INTO item (BID) SELECT assets.aid FROM assets WHERE aid = 1234; 

使用DISTINCT的SELECT,如果你可以找到多個匹配,不想多行插入。

另外,如果只想限制數據庫中的插入,則使用外鍵約束。一旦你有了,你不需要有條件地插入。只需插入並讓數據庫在嘗試失敗時,如果援助尚未出現在父表中。