我有一個MySQL表'阿爾法',將在一列中包含另一個表「測試版」的主鍵。但是如果無法找到'beta'中的條目,我想在'beta'中插入值,並在'alfa'中使用新的鍵。我能以某種方式在一個查詢中做到這一點嗎?插入,如果不存在其他只是在mysql中選擇
我目前有:
INSERT INTO alfa SET c1=(SELECT id FROM beta WHERE name = 'john');
當「約翰」在表中存在的正常工作,但在其他方面失敗。那麼我是否可以改進它,讓新名稱被插入並選擇,如果它不在那裏? id是auto_incremented。
我試着去看IF,但還沒有找到如何使用IF以外的SELECT,這是可能的嗎?
我知道我可以在幾個查詢中做到這一點,但我正在與遠程數據庫交談,所以一次可以完成所有工作。
例如可能已創建這樣的表:
CREATE TABLE alfa (
c1 int,
PRIMARY KEY (c1)
)
CREATE TABLE beta (
id int auto_increment,
name varchar(255),
PRIMARY KEY (id)
)
所以alfa.c1應參照beta.id值。
總之我想做的事:
從公測表中插入約翰將ID爲C1在阿爾法,如果約翰不處於測試階段,存在再插入約翰進入測試階段,插入新的自動遞增的ID爲約翰進入阿爾法的c1。
你可以編輯你的問題,並至少把表結構?目前還不清楚你從哪裏獲得測試版所需的附加信息?如果還沒有在測試版中創建,alfa可能有多少鑰匙? – 2010-02-16 19:14:37
我試圖現在添加更多信息。 – Zitrax 2010-02-16 19:49:33