0

我有下表

id  val     match_id    oddname_id    dif
1   1.75    401             1         0.25 //THIS ONE MUST BE DELETED. EXPLAINED BELOW
2   3.30    401             2         -0.20
3   5.00    401             3         0.00
4   1.13    401             4         0.00

Id 只是索引。主键是oddname_idmatch_id一起。

我从 xml 解析数据,这是我必须做的:

  1. 如果主键不存在,则插入。

    当我有 match_id=402 和 oddname_id=1 时,我必须插入,因为 match_id 402 不存在。

  2. 重复密钥更新。

    当我有 match_id=401 和oddname_id=1 时,我必须只更新 val 和 dif。(dif 等于 val 的差异,它是新值。

  3. 如果 KEY DOESN'T EXISTS 我想删除所有数据

这是我的查询;前两个语句工作正常,但我不知道如何使第三个语句起作用:

INSERT INTO odds 
    (match_id,oddname_id,val) 
VALUES 
    ('401','2','3.3'),
    ('401','3','5.0'),
    ('401','4','1.25'),
ON DUPLICATE KEY 
UPDATE 
    dif = val-VALUES(val), 
    val = VALUES(val);

我想在此查询中添加如下内容:

IF KEY DOESN'T EXISTS DELETE.

在此示例中,它必须删除第一行:

 id val     match_id    oddname_id    dif
 1  1.75    401             1         0.25

因为我在插入时在 VALUES 中没有 401 (match_id) 和 1 (oddname_id)。

4

1 回答 1

0
  1. 从附加(临时)表中的 XML 文件导入数据 - 您可以在 MySQL 5.5 中使用 LOAD XML 命令。
  2. 从表中删除odds临时表中不存在的记录。表 - 使用 DELETE 和 JOIN 命令。
  3. odds使用 temp 中的数据插入/更新表。表 - 使用 INSERT...ON DUPLICATE KEY UPDATE 命令。
于 2011-10-13T08:58:00.920 回答