避免将结果添加到表(如果已存在)

时间:2019-10-31 15:02:21

标签: php sql wordpress

我目前正在获取查询结果并将其添加到新表中。目前,它只是在每次加载时添加结果。

如果payment_issue表中已经存在user_id,如何避免添加结果?

$results = $wpdb->get_results( "SELECT s.id, s.status FROM subscriptions as s LEFT JOIN subscriptionlog as l ON s.id=l.subscription_id WHERE l.event LIKE 'payment_error_mode_triggered %' AND l.date >= 1514764800 AND l.date <= 1569888000 and s.status = 'payment-issue'" );

foreach($results as $result){
  $customer_id = $result->id;
  $wpdb->insert("payment_issue", array(
   "user_id" => $customer_id,
  ));
}

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以使用on duplicate key update避免插入新用户。

首先,您需要在payment_issue上使用唯一索引或约束:

create unique index unq_payment_issue_id on payment_issue(id);

注意:您的问题未指定payment_issue中“用户ID”列的名称,所以我只是在使用id

然后,您应该以{{1​​}}的形式插入。

第三,您应该这样说:

insert . . . select