2013-10-04 98 views
1

我發現了幾個類似的問題,但沒有一個讓我超越了我的路障。 (這一個是關閉How to 'insert if not exists' in MySQL?MySQL在條件表中插入指定值和找到的值

我需要從一個表中讀取除一個以外的所有ID,然後用它們更新另一個表。目的地表格有2列。其中一列必須是該外國身份證。我希望另一列是一個數字I硬編碼到查詢中。

這樣的:

letter_id drop_letter_id 
10  99 

應用程序會發生什麼事是,如果有人訂閱函10,則退訂他們從信99.我想99是專用於那些沒有訂閱任何東西別的,所以我需要找到所有的字母IDS是不是99,並將它們添加到該降表作爲

letter_id drop_letter_id 
x  99 
y  99 

其中x和y是其他字母的ID號碼。

有點像

SELECT letter_id FROM letters WHERE letter_is<>99 

然後

INSERT IGNORE INTO letter_drops (x,99)... 
+0

[存儲過程(http://dev.mysql.com /doc/refman/5.1/en/stored-routines.html)? – BlitZ

+0

@CORRUPT,我從來沒有使用過它們,我不確定我的系統是爲他們設置的。 – TecBrat

回答

1

如果我得到正確的,它是:

INSERT IGNORE INTO letter_drops SELECT letter_id, 99 FROM letters WHERE letter_id!=99 
+0

謝謝。我通常可以比我寫的更好地讀取sql查詢。這看起來不錯。我會試試看。所以,'SELECT 99'只是把'99'放在一個值可能被選中的地方? – TecBrat

+0

確實如此。你可以使用'SELECT'和任何有效的表達式。標量值是導致有效表達的原因。 –

+0

您查詢的是我所問的。現在我要稍微複雜一點。這個DB是應用程序的一部分,如果我可以避免它,我不想更改數據庫的結構。我正在研究有關表格的副本,並且我以重複結束,顯然他們沒有設計它來保持行的唯一性。你會如何建議我阻止這個腳本做出重複的行給這個信息? – TecBrat