1

解決できない MySQL の問題があります。仮想ユーザー dovecot インストールを管理するための mysql があります。これは、2 つのテーブル (1 つはエイリアス用、もう 1 つはドメイン用) を使用します。

テーブル エイリアスには domain_id(INT)、source(VARCHAR)、destination(VARCHAR) のフィールドがありますが、テーブル domain には id (INT AUTO INC) と name (VARCHAR) の 2 つのフィールドしかありません。

特定のドメインに属するエイリアスを選択することはできますが、次を発行します。

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 に答える