1

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

表别名有这些字段: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";

我无法开始插入新别名,指定域名。像这样的东西:

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";

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

4

3 回答 3

2

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

INSERT INTO valias(domain_id, source, destination)  
SELECT id, 'canto', 'george' FROM vdomains
WHERE  name = 'domain_name';
于 2013-07-20T16:46:05.883 回答
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'  
于 2013-07-20T16:41:16.150 回答
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";
于 2013-07-20T16:47:24.527 回答