-1

我有两张桌子:

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'

上面的代码不起作用,有什么想法吗?

4

2 回答 2

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`
于 2012-10-13T07:51:28.530 回答
0

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

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

或者

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使用第二个选项插入到表中。

于 2012-10-13T07:48:28.840 回答