我可以在A表连接B表中插入2个值吗?

时间:2012-10-13 07:43:31

标签: mysql sql join insert

我有两张桌子:

vote('id', 'question_id', 'ip_id')

ip('id','ip_addr')

我想做这样的事情:

INSERT INTO SELECT `vote`.`question_id`, `ip`.`ip_addr` 
            FROM `vote` 
            LEFT JOIN `ip` 
            ON `vote`.`ip_id` = `ip`.`id` VALUES '2','127.0.0.1'

以上代码无效,有什么想法吗?

2 个答案:

答案 0 :(得分:2)

INSERT INTO SELECT的语法是这样的:

INSERT INTO Table2
(Column1, Column3)
SELECT Column1, Column3
FROM Table1

所以你的查询应该是这样的:

INSERT INTO <TableName> (`question_id`, `ip_addr`)
            SELECT `vote`.`question_id`, `ip`.`ip_addr` 
            FROM `vote` 
            LEFT JOIN `ip` 
            ON `vote`.`ip_id` = `ip`.`id`

答案 1 :(得分:0)

您可以使用以下方法之一将行插入现有表中:

INSERT INTO vote (id, question_id, ip_id)
VALUES (....)

OR

INSERT INTO vote (id, question_id, ip_id)
SELECT id, question_id, ip_id 
FROM
    <some existing tables, optionally using joins, where clauses etc., to select the data to insert>

在您的情况下,您似乎试图同时将记录插入IP表以及VOTE表,这是不可能的。

您应首先使用上面的第一个语法在IP表中插入记录,然后使用第二个选项插入VOTE表。