0

会社名、製品、価格などを含むテキストファイルがあります。dbには約200のレコードがあり、テキストファイルにはそれ以上のレコードがあります。ここで、1つのSQLクエリですべての価格をdbに更新したいと思います。私はこれを試しました:

for($i = $start_row; $i < $stop_row; $i += 3)
...
$prices = array($price1, $price2, price3);
$pricesfloat = array_map('floatval', $prices);
...
$query = "UPDATE test3 SET price1 = $pricesfloat[0], price2 = $pricesfloat[1], price3 = $pricesfloat[2] WHERE company = '$company' AND product = '$product'";
mysql_query($query, $connection) or die(mysql_error());

mysql_affected_rows()0行を返します。INSERT INTOを使用してすべての値をdbに挿入できますが、この場合、既存の値を更新し、不足している値を後で追加する必要があります。誰か助けてもらえますか?:)

4

1 に答える 1

0

INSERT ... ON DUPLICATE KEY UPDATEhttp://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html、あなたの状況に合うかもしれません:

INSERT INTO table (product_id, price) VALUES (1, 1.323),(2, 3434) ... (200, 2.333) ON DUPLICATE KEY UPDATE price = VALUES(price)

一括更新の別の方法は次のとおりです。

UPDATE table
INNER JOIN (
    (SELECT 'company1' AS company, 'product1' AS product, 'price1' AS price
    UNION ALL SELECT 'company2', 'product2', 'price2'
    ....
    UNION ALL SELECT 'companyN', 'productN', 'priceN') AS tmp 
) USING (company, product)
SET table.price = tmp.price
于 2012-06-20T07:12:29.770 に答える