gpt4 book ai didi

mysql - 如何根据返回相同数据的多个列进行 UPDATE 或 INSERT,而无需访问唯一 ID

转载 作者:行者123 更新时间:2023-11-29 15:31:38 25 4
gpt4 key购买 nike

我有一个假日公园可用性数据表一个例子是:

<table>
<thead>
<tr>
<th>id</th>
<th>api_key</th>
<th>date</th>
<th>category_id</th>
<th>sites_available</th>
<th>price</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>asfe4t4gs</td>
<td>2019-11-08</td>
<td>1</td>
<td>2</td>
<td>100</td>
</tr>
<tr>
<td>2</td>
<td>ydfhswre3354</td>
<td>2019-12-08</td>
<td>2</td>
<td>3</td>
<td>150</td>
</tr>
</thead>
</table>

我遇到的问题是,我们发送一个 JSON 数据结果来更新或插入到该表中。它需要检查 api_key、date 和category_id 是否已在表中,并使用其他字段(price 和sites_available)更新它们,否则需要将它们作为新条目插入。

这是一个 WordPress 插件。

我们尝试循环遍历所有内容并确定它是否存在,但由于传入的数据量很大,速度太慢并且超时(数千个条目)。我们还尝试使用 $wpdb->replace 方法,但它似乎不起作用,因为它每次都会添加新条目。

   foreach ($result['categories'] as $category) {
if (empty($category['category_id']))
throw new Exception('category_id is empty');
if (empty($category['dates']))
throw new Exception('dates is empty');
foreach ($category['dates'] as $date) {
if(empty($date['date']))
throw new Exception('date is empty');
$wpdb->replace(
$availability_table_name,
array(
"sites_available" => $date['sites_available'],
"price" => $date['price'],
'api_key' => $result['api_key'],
'instance_id' => $result['instance_id'],
'category_id' => $category['category_id'],
"date_availability" => $date['date'],
)
);
}
}

最佳答案

您想更新 SQL 表吗?然后你可以使用 SQL 语句来完成此操作,例如:

INSERT INTO table_name (id, sites_available, price) VALUES(1, "2", 3) ON DUPLICATE KEY UPDATE sites_available="2", price=3;

http://www.mysqltutorial.org/mysql-insert-or-update-on-duplicate-key-update/

如果你想检查 html 表中的条目是否已经存在:最好的方法是将所有数据写入一个数组一次,然后检查数组键是否存在。

问候汤姆

关于mysql - 如何根据返回相同数据的多个列进行 UPDATE 或 INSERT,而无需访问唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com