如果条件,MySQL更新值

时间:2015-12-09 16:20:14

标签: mysql csv

是否可以根据条件更新值?

实施例: 分贝酮

ID  Code    Brand   PN     Model
1   X62     Puma    x1234    
2   X62     Puma    x2345    
3   X63     Puma    x3456    
4   X63     Nike    x4567    
5   X62     Nike    x5678    
6   X62     Nike    x6789    
7   X63     Nike    x7890    
8   X63     Puma    x8901    
9   X62     Nike    x9012   
10  X62     Puma    x1234    
11  X62     Puma    x2345    
12  X63     Puma    x3456    
13  X63     Nike    x4567    
14  X62     Nike    x5678    
15  X62     Nike    x6789    
16  X63     Nike    x7890    
17  X63     Puma    x8901    
18  X62     Nike    x9012   

我有一个List:db-update

PN      Model
x1234   9012
x2345   8901
x3456   7890
x4567   6789
x5678   5678
x6789   4567
x7890   3456
x8901   2345
x9012   1234

在这个例子中,我想导入第二个列表,这样它就会写出相应的"模型"到" PN"如果它存在 这是它最终应该看起来的样子: 分贝酮

ID  Code    Brand   PN      Model
1   X62     Puma    x1234   9012
2   X62     Puma    x2345   8901
3   X63     Puma    x3456   7890
4   X63     Nike    x4567   6789
5   X62     Nike    x5678   5678
6   X62     Nike    x6789   4567
7   X63     Nike    x7890   3456
8   X63     Puma    x8901   2345
9   X62     Nike    x9012   1234
10  X62     Puma    x1234   9012
11  X62     Puma    x2345   8901
12  X63     Puma    x3456   7890
13  X63     Nike    x4567   6789
14  X62     Nike    x5678   5678
15  X62     Nike    x6789   4567
16  X63     Nike    x7890   3456
17  X63     Puma    x8901   2345
18  X62     Nike    x9012   1234

1 个答案:

答案 0 :(得分:0)

如果List是一个表,您可以使用JOIN进行更新:

UPDATE
  yourtable t JOIN list l
  ON t.PN = l.PN
SET
  t.model = l.model

如果list不是表,您可以执行多个查询:

UPDATE yourtable SET model='1234' WHERE PN='x9012'
...

或者您可以使用它:

UPDATE
  yourtable t JOIN (
    SELECT 'x1234' PN, '9012' Model UNION ALL
    SELECT 'x2345' PN, '8901' Model UNION ALL
    ..etc...
  ) l
  ON t.PN = l.PN
SET
  t.model = l.model
相关问题