【发布时间】:2013-02-07 07:07:04
【问题描述】:
如果您能帮我解决这个 sql 问题,我将不胜感激。
我有一个包含两列的表。在本例中将它们命名为 UserID 和 LocationID。
我想清理这个表,所以我想保留每对唯一的 UserID 和 LocationID 的第一次出现,并删除包含相同对的其他行。换句话说,我想知道他去过的每个用户的每个位置。如果他一次又一次地访问同一个地方并被记录,我想删除那些记录。例如,这是原始表:
ID UserID LocationID
1. "user1" "location1"
2. "user1" "location2"
3. "user2" "location3"
4. "user1" "location1"
5. "user2" "location3"
6. "user2" "location3"
我想删除 4.、5. 和 6. 行。
是否有可能在一个mysql命令中解决它? 谢谢。
【问题讨论】:
-
你怎么知道什么是“第一次出现”,仅仅因为它在你的输出中是第一个并不一定意味着它是第一个进入数据库的......第二个数字来自哪里?它们在表中是否也带有某种列名或仅用于说明目的?
-
您的表是否有
AUTO_INCREMENT字段,例如rowID之类的? -
是的,数字是记录的ID。自动递增的 INT。 “第一次”出现是指最低的 id。
-
删除它们后,将 [UserID,LocationID] 定义为主键以避免将来出现同样的问题。
-
@Aris:或者更确切地说是
UNIQUE KEY,PRIMARY KEY应该是ID字段。
标签: mysql