比较两个mysql数据库中的数据

时间:2012-05-22 11:26:19

标签: mysql sql compare procedure

我有两个mysql数据库。我必须将第一个数据库中一个表的列数据与第二个数据库的列数据进行比较。在两个数据库中,表名和列名相同。我必须找到共同的数据。该列是varchar字段。但问题是“纽约时代”和“纽约时代”和“纽约”应该被认为是普遍的。我无法生成SQL查询。这是我试过的程序

drop procedure if exists test;
delimiter #
create procedure test()
begin

declare v_max int unsigned default 243;
declare v_counter int unsigned default 1;
declare pName varchar(255);

start transaction;
while v_counter < v_max do
select t.property_name from t.property where t.property_id=v_counter into pName;
SELECT distinct b.property.property_name,b.property.property_id from b.property where    b.property.property_name like '%'+pName+'%'
set v_counter=v_counter+1;
end while;
commit;
end #

delimiter ; 

是否可以同样进行比较?

1 个答案:

答案 0 :(得分:1)

不可能告诉MySQL做这么模糊的比较。它无法知道应考虑以下哪一项&#34;相同的&#34;

  • newyork times
  • 纽约时报
  • 纽约

如果您的错误数量有限&#34;,您可以在查找中将其标准化

WHERE t.property_name = REPLACE(v.property_name, 'new york times', 'new york')

但当然非常很快变得无法管理。

您是否可以暂时添加新列?然后你可以在一系列预先通过中对数据进行某种清理。

UPDATE t
SET cleanpropertyname = 'new york times' 
WHERE property_name IN ('new york times', 'new york', 'nyt')