有没有办法尝试修复数据库地址列中的地址?
所以,如果我有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个地址而不是所有数据库。
答案 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