-5

我有一个名为“test”的表,它有 4 列,id、name、address、telephone。有很多重复的数据。我想要的是查询以使用“/”将电话号码添加到第一行并删除其他行。请看图片。在此处输入图像描述

4

2 回答 2

-1

快速尝试。

您可以这样做将所有电话号码添加到第一条记录(逗号分隔,您可以添加一个参数来将其更改为斜杠,但这将是一个更糟糕的主意)

UPDATE test a
INNER JOIN (SELECT name, address, GROUP_CONCAT(phone) AS AllPhone, MIN(id) AS MinId FROM test GROUP BY name, address) b
ON a.name = b.name
AND a.address = b.address
AND a.id = b.MinId
SET a.phone = b.AllPhone

然后用这样的东西删除其他人

DELETE a
FROM test a
LEFT JOIN (SELECT name, address, MIN(id) AS MinId FROM test GROUP BY name, address) b
ON a.id = b.MinId
WHERE b.MinId IS NULL

请注意,这将为您提供一个名称/地址的分隔电话号码列表,这是将来处理的主要难题,并且表明数据库设计不当。

于 2013-06-25T11:20:23.640 回答
-2

要删除其他数据,请使用您的 PHPMuAdmin 界面,您可以删除它们或构建一个管理页面,您可以在其中动态编辑和删除数据库中的数据

于 2013-06-25T11:06:56.470 回答