我有一个我无法解决的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";
有人知道如何解决这个问题吗?
答案 0 :(得分:2)
我的经验主要是在MS SQL Server中,但我认为它应该在MySQL中采用相同的方式:
INSERT INTO valias(domain_id, source, destination)
SELECT id, 'canto', 'george' FROM vdomains
WHERE name = 'domain_name';
答案 1 :(得分: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'
答案 2 :(得分: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";