我有两张桌子:
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'
以上代码无效,有什么想法吗?
答案 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
表。