如果任何行中的第三个字段包含值,MYSQL 会更新与第二个字段匹配的所有行中的一个字段

标签 mysql

OrderNumber    SKU    IsFBA    Description
123456         RED5            Product Payment
123456         RED5            commission
123456         RED5            FBA Fees
234567         RED5            Product Payment
234567         RED5            commission
345678         RED5            Product Payment
345678         RED5            commission

我想创建一个更新 IsFBA = yes 的 SQL 语句 在具有相同 orderNumber 的任何行的所有 OrderNumber 中,其中描述如“%FBA%”

换句话说: 第 3 行“描述”包含“FBA”(如“%FBA%”)。我希望在与此行具有相同 OrderNumber 的所有其他行中将“IsFBA”更新为 yes。

所以我的结果是:

OrderNumber    SKU    IsFBA    Description
123456         RED5   yes      Product Payment
123456         RED5   yes      commission
123456         RED5   yes      FBA Fees
234567         RED5            Product Payment
234567         RED5            commission
345678         RED5            Product Payment
345678         RED5            commission

我可以使用 PHP 循环数据库轻松地完成此操作,但想知道是否有一个 mySQL 语句可以执行相同的操作。

最佳答案

这应该可行,但尚未测试。

UPDATE MyTable m1
INNER JOIN (
   SELECT OrderNumber
   FROM MyTable
   WHERE Description LIKE '%FBA%'
   GROUP BY OrderNumber
) m2 ON m1.OrderNumber = m2.OrderNumber
SET IsFBA = 'yes'

它比使用 IN 稍好一些。

关于如果任何行中的第三个字段包含值,MYSQL 会更新与第二个字段匹配的所有行中的一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26683506/

相关文章:

mysql - 从hibernate到mysql,默认值映射问题

java - JPA 选择忽略 OR 部分

php - MySQL 内连接表从唯一表中给出重复值

php - 当我从选择类型中选择 'any' 选项并单击提交时,我想显示 MySQL 数据库中的所有数据

php - UNPIVOT mysql数据到其他表

php - 使用 PHP 按类别对 MYSQL 结果进行排序

java - 使用 JDBC 连接到 MySQL

MySQL:在插入之前查找多个外键值

javascript - jquery 数据表破坏页面上的链接

mysql - 左外连接存储过程错误