2013-08-22 54 views
1

我有一個3列的表。沒有列是唯一鍵。Mysql,插入如果所有列不存在

我想運行一個插入只有當行不存在已經在每列中完全相同的值。

given the following table: 
a b c 
---------- 
1 3 5 
7 1 3 
9 49 4 

a=3 b=4 c=3 should insert 
a=7 b=1 c=3 should not insert (a row with these exact values exists) 

到目前爲止我發現的解決方案需要一個唯一的主鍵。

+4

因此,在'(a,b,c)'上定義一個複合'UNIQUE'鍵? – eggyal

回答

0

最有效的方法是將UNIQUE KEY添加到您的表格中。您也可以創建一個比較值的算法,但如果表中有許多列,則不希望這樣做。

+0

一個唯一的密鑰可以解決我面臨的問題嗎? – Sean256

+0

是的,你只需要製作一個比較現有記錄的唯一鍵和新記錄的算法。 – Matthew

+0

對不起,我不明白你在說什麼。所有3列同樣重要,不只是一個。我要存儲的數據使得一列不可能是唯一的。目前(使用java)我正在做2個單獨的查詢,其中一個是select(其中所有3列= x,y,z),然後只在插入時返回0結果。我正在尋找在一個MySQL查詢中這樣做,所以我們不必打它兩次。 – Sean256

0

我不確定,我明白你的觀點。但希望這有助於。所有的

首先,你必須選擇與WHERE子句

SELECT * FROM table WHERE a=$a && b=$b && c=$c 

行之後,你fetch_array或者數組或行存在,這意味着「未插入」 fetch_row。

+0

我應該提到,這一切都需要在SQL查詢本身完成,而不是像你建議的那樣使用php或者在我的情況下使用java。 – Sean256

相關問題