我有这些表格 表-A
meta_id | post_id | meta_key | meta_value
-----------------------------------------
Incremented | 35 | some_value | 12345
Incremented | 45 | some_value | 22345
Incremented | 32 | other_value | 22345
表-B
object_id | term_taxonomy_id | term_order
-----------------------------------------
23 | 53 | 0
54 | 65 | 0
我想像这样插入Table_B(Table_A.post_id,' 5302',0),所以我只需要Table_A中的post_id,但是那些有meta_key = some_value和meta_value>比方说20000,实际上这是一个unix时间戳
Table_B有这些道具
PRIMARY object_id, term_taxonomy_id
INDEX term_taxonomy_id
我试过了这个查询
INSERT INTO Table_B (object_id,term_taxonomy_id)
SELECT u.post_id , '5302' FROM Table_A u INNER JOIN Table_B o ON u.post_id = o.object_id WHERE u.meta_key = 'some_value' AND u.meta_value < UNIX_TIMESTAMP(NOW())
我收到了这个错误:
查询错误(1062):重复输入&#39; 4066-5302&#39;关键&#39; PRIMARY&#39;
答案 0 :(得分:0)
Table_B
的主键是什么?
检查SELECT查询的结果是否已存在于Table_B
的主键列中。
答案 1 :(得分:0)
可能您已经为这些值插入了值(条目&#39; 4066-5302&#39;)或者您可以选择返回更多行 在这种情况下,您应该使用不同的
INSERT INTO Table_B (object_id,term_taxonomy_id)
SELECT distinct u.post_id , '5302'
FROM Table_A u
INNER JOIN Table_B o ON u.post_id = o.object_id
AND u.meta_key = 'some_value' AND u.meta_value < UNIX_TIMESTAMP(NOW())
答案 2 :(得分:0)
你有多个元素,其中object_id:4066,term_taxonomy_id:5302,由于那些是你的主键,它们不能重复,考虑改变你的查询只返回唯一值。