我有一个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