【问题标题】:Compare 2 columns in different tables mysql比较不同表mysql中的2列
【发布时间】:2012-02-12 16:54:40
【问题描述】:

我有两个包含业务信息的表,第一个表称为 A 有 (id,info,category),第二个表称为 B 有 (id,phone,category)。

A.info 包含地址、电话和其他信息。 B.phone 只包含一个电话号码。

我想将 B.category 设置为 B.phone 在 A.info 中存在的 A.category。

我是这么想的:

update A
inner B
set B.category = A.category
where B.phone like %A.phone%

没有运气

【问题讨论】:

  • 1) 两个 id 是否匹配? 2)如果他们不这样做,如果来自 A 的多个记录具有相同的电话号码和不同的类别会发生什么?
  • ids 不匹配两个表中也有一个部分列。所以重复不会成为问题。实际上,我正在研究如何在列中使用通配符(例如 %column%),但我什么也没找到。

标签: mysql compare


【解决方案1】:

好的,试试这个查询:

update b, a
set b.category = a.category
where a.info like concat('%', b.phone, '%');

【讨论】:

    【解决方案2】:

    看起来您提供的是文字 A.Phone 值而不是实际的列值。

    您提到在您的一个 cmets 中也使用通配符。如果您还需要更精细的控制,则可以使用 REGEXP。

    我不确定您的列数据类型是什么,但这里有一个匹配记录的示例 其中 a.info REGEXP concat('[[:<: b.phone>:]]')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-25
      • 2020-12-16
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多