如果它们看起来有点相同,我该如何更新地址

时间:2013-08-07 20:14:42

标签: mysql

有没有办法尝试修复数据库地址列中的地址?

所以,如果我有2条记录 123主要RD 123 Main Road

我想让他们两个都一样,只要他们是相同的,选择哪一个并不重要?

在MySQL中有可能这样做吗?

表格看起来像这样

CREATE TABLE address (
id int(11),
address1 varchar(255),
account_id int(11)
);

id -> address1 ->   account_id
10 -> 123 Main RD          -> 65
20 -> 123 Main ROAD        -> 65
25 -> 8751 West 1st Street -> 65
27 -> 4521 11th Ave        -> 65

所以我想比较共享相同account_id的地址而不是所有地址 所以如果我有10个具有相同account_id的记录,那么我只想比较10个地址而不是所有数据库。

2 个答案:

答案 0 :(得分:2)

这是一个疯狂的猜测,但如果具有相同account_id的所有行应具有相同的地址,则可以执行以下操作

UPDATE address a JOIN
(
  SELECT *
    FROM address
   WHERE account_id = 65
   ORDER BY id DESC
   LIMIT 1
) q ON a.account_id = q.account_id
   SET a.address1 = q.address1

这是 SQLFiddle

答案 1 :(得分:0)

这只是一个简单的例子作为起点 -

SELECT
    account_id,
    REPLACE(LCASE(address1), ' rd', ' road') AS address,
    COUNT(*) AS cnt
FROM address
GROUP BY account_id, address
HAVING cnt > 1