插入sql并从另一个表中选择

bwleehnv  于 2021-06-24  发布在  Mysql
关注(0)|答案(3)|浏览(297)

我有这些table

meta_id | post_id | meta_key | meta_value
-----------------------------------------
Incremented | 35 | some_value  | 12345
Incremented | 45 | some_value  | 22345
Incremented | 32 | other_value | 22345

表\u b

object_id | term_taxonomy_id | term_order
-----------------------------------------
    23    |       53         |     0
    54    |       65         |     0

我想像这样在表\u b中插入(表\u a.post\u id,'5302',0),所以我只需要表\u a中的post\u id,但是那些具有meta\u key=some\u value和meta\u value>的表可以说是20000,实际上这是一个unix时间戳
桌上有这些道具

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”重复

pwuypxnk

pwuypxnk1#

您有多个元素,其中object\u id:4066、term\u taxonomy\u id:5302是主键,因此它们不能重复,请考虑更改查询以仅返回唯一值。

insrf1ej

insrf1ej2#

主键是什么 Table_B ?
检查select查询的结果是否已存在于中 Table_B 的主键列。

sqxo8psd

sqxo8psd3#

可能您已经为这些值插入了一个值(条目“4066-5302”),或者您选择了return more than a row在这种情况下应该使用distinct

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())

相关问题