繁体   English   中英

MySQL 中的多个更新用于同一个表一个查询

[英]Multiple updates in MySQL for same table one query

有没有办法在 MySQL 的单个查询中一次更新多行? 现在我对每个条件有 4 个查询。 我想将以下所有更新组合到一个性能最佳的查询中。

UPDATE rates SET timestamp = 1643655901, bnb = 'value1', eth = 'value2', usdc = 'value3' WHERE base = 'btc';
UPDATE rates SET timestamp = 1643655901, bnb = 'value4', btc = 'value5', usdc = 'value6' WHERE base = 'eth';
UPDATE rates SET timestamp = 1643655901, eth = 'value7', btc = 'value8', usdc = 'value9' WHERE base = 'bnb';
UPDATE rates SET timestamp = 1643655901, bnb = 'value10', btc = 'value11', eth = 'value12' WHERE base = 'usdc';

任何查询的timestamp字段都可以相同

value1 - value12基于不同变量的动态数据

我正在寻找类似问题的其他答案,但无法构建查询,感谢您的帮助。

以下是您可以如何构造一个case 表达式以组合成一个更新(当然未经测试)

update rates set
    timestamp = 1643655901, 
    bnb = case base
        when 'btc' then 'value1'
        when 'eth' then 'value4'
        when 'bnb' then 'value7'
        else 'value10' end,
    etc = case base
        when 'btc' then 'value2'
        when 'eth' then 'value5'
        when 'bnb' then 'value8'
        else 'value11' end,
    usdc = case base
        when 'btc' then 'value3'
        when 'eth' then 'value6'
        when 'bnb' then 'value9'
        else 'value12' end
where base in ('btc', 'eth', 'bnb', 'usdc');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM