-1

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

所以如果我有 2 条记录 123 Main 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 个地址而不是所有数据库。

4

2 回答 2

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

于 2013-08-07T20:39:27.220 回答
0

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

SELECT
    account_id,
    REPLACE(LCASE(address1), ' rd', ' road') AS address,
    COUNT(*) AS cnt
FROM address
GROUP BY account_id, address
HAVING cnt > 1
于 2013-08-07T20:34:57.663 回答