[英]Insert SQL with SELECT from another table
我有这些表Table_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)错误:键“ PRIMARY”的条目“ 4066-5302”重复
Table_B
的主键是Table_B
?
检查SELECT查询的结果是否已经存在于Table_B
的主键列中。
可能是您已经为这些值插入了一个值(条目“ 4066-5302”),或者是您选择了返回更多然后是一行,在这种情况下,应使用
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())
您有多个元素,其中object_id:4066,term_taxonomy_id:5302,并且由于这些是主键,因此无法重复,请考虑将查询更改为仅返回唯一值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.