【问题标题】:MySQL: how to update with a filtering vector list?MySQL:如何使用过滤向量列表进行更新?
【发布时间】:2018-08-25 21:10:19
【问题描述】:

我有一个值列表,我想与 where 子句匹配以更新标志。

(col1, col2, col3)

(1, 2, 3)

(2, 3, 4)

(3, 4, 5)

如果过滤列表仅由一列组成,我会这样做:

update mytable 
set flag=1
where col1 in ('1','2','3','5','8','13');

这个查询适合我的目的吗?

update mytable 
set flag=1
where col1 in ('1','2','3')
and col2 in ('2','3','4')
and col3 in ('3','4','5');

如果表有记录 (1,3,5),查询将更新标志,但过滤列表不会被正确考虑。

是否可以对过滤列表的所有列使用 where 子句?例如

where (col1, col2, col3) in (???)

【问题讨论】:

    标签: mysql sql-update


    【解决方案1】:

    您可以使用IN 来比较行构造函数(请参阅here)。

    以下应该有效:

    UPDATE mytable
    SET flag=1
    WHERE (col1, col2, col3) IN ((1, 2, 3), (2, 3, 4), ...);
    

    但正如 here 所写,它可能不是最快的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-16
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多