繁体   English   中英

使用SELECT从另一个表插入SQL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM