2013-07-20 129 views
1

我有一个我无法解决的MySQL问题。我有一个mysql来管理虚拟用户dovecot安装,它使用两个表(一个用于别名,另一个用于域)。mysql插入值,从另一个表中选择的数据

表别名具有以下字段:domain_id(INT),source(VARCHAR),destination(VARCHAR),而表域只有两个字段:id(INT AUTO INC)和name(VARCHAR)。

虽然我可以通过发行来选择属于给定域别名:

SELECT valias.* FROM aliases AS valias 
JOIN domains AS vdomains ON valias.domain_id=vdomains.id 
WHERE vdomains.name = "domain_name"; 

我不能去上班插入一个新的别名,specifing域名。像这样:

INSERT INTO valias(domain_id, source, destination) 
    VALUES (id, 'canto', 'george') 
    SELECT id FROM aliases 
    JOIN domains AS vdomains ON aliases.domain_id=vdomains.id 
    WHERE vdomains.name =  "domain_name"; 

有人知道如何解决这个问题吗?

+0

如果我正确理解那么你已经使用了INSERT INTO valias,其中“valias”不是任何表。所以我认为你不能使用它。插入语句必须具有表名或视图名。 – user2510115

回答

2

我的经验主要是在MS SQL Server中,但我认为它应该在MySQL以同样的方式:

INSERT INTO valias(domain_id, source, destination) 
SELECT id, 'canto', 'george' FROM vdomains 
WHERE name = 'domain_name'; 
+0

谢谢!奇迹般有效。问候! – flix

0

要么我在这里失去了一些东西,要么你的查询看起来有点过分了。这个怎么样:

INSERT INTO aliases(domain_id, source, destination) 
    VALUES (id, 'canto', 'george') 
    JOIN domains ON domains.id = aliases.domain_id 
    WHERE domains.name = 'domain name' 
0

试试这个,

INSERT INTO valias(domain_id, source, destination) 
SELECT id,'canto', 'george' 
FROM aliases 
    JOIN domains AS vdomains 
     ON aliases.domain_id=vdomains.id 
WHERE vdomains.name =  "domain_name"; 
相关问题