leetcode【sql】 Delete Duplicate Emails
2015-11-09 16:08
405 查看
WriteaSQLquerytodeleteallduplicateemailentriesinatablenamedPerson,keepingonlyuniqueemailsbasedonitssmallestId.
Idistheprimarykeycolumnforthistable.
Forexample,afterrunningyourquery,theabovePersontableshouldhavethefollowingrows:
这里p1和p2都是Person的别名。innerjoin等于join。所以p1joinp2应该是以下的结果:
sql表别名的用法:as
select*fromkettleoutputtablea
wherea.os=2andstorename='anzhi'
和
select*fromkettleoutputtableasa
wherea.os=2andstorename='anzhi'
等效,也就是说别名的as可以省略!在表明后直接加上简单的名字就行了。
+----+------------------+ |Id|Email| +----+------------------+ |1|john@example.com| |2|bob@example.com| |3|john@example.com| +----+------------------+
Idistheprimarykeycolumnforthistable.
Forexample,afterrunningyourquery,theabovePersontableshouldhavethefollowingrows:
+----+------------------+ |Id|Email| +----+------------------+ |1|john@example.com| |2|bob@example.com| +----+------------------+
DELETEp1FROMPersonp1INNERJOINPersonp2WHEREp1.Email=p2.EmailANDp1.Id>p2.Id;
这里p1和p2都是Person的别名。innerjoin等于join。所以p1joinp2应该是以下的结果:
------+------+-----------------+ |P1.Id|p2.Id|Email| +-----+------+-----------------+ |1|1|john@example.com| |2|2|bob@example.com| |3|3|john@example.com| +----+-------------------------+ 然后p1.id>p2.id所以id为3的被删除了,但是因为p1和p2都是person事实上,只有一个id。为了理解,写成了两列。
补充一些关于sql语句的知识:
sql表别名的用法:as
select*fromkettleoutputtablea
wherea.os=2andstorename='anzhi'
和
select*fromkettleoutputtableasa
wherea.os=2andstorename='anzhi'
等效,也就是说别名的as可以省略!在表明后直接加上简单的名字就行了。
相关文章推荐
- Oracle中查询使用正则表达式函数REGEXP_LIKE
- 服务器上安装PL\sql工具-(整理)
- sql获得某个时间段的数据
- sql 查询 空表
- MySQL忘记密码怎么办?
- Redis与Memcached的比较.
- sql 代码调试
- SQL中Group By的使用
- MySQL运维开发相关的所有工具
- 【转】mysql索引总结----mysql 索引类型以及创建
- SqlServer中截取小数位数
- Service-stack.redis 使用PooledRedisClientManager 速度慢的原因之一
- Mysql优化
- SqlServer存储过程(带参数)
- sql 函数 总结
- mysql read committed
- mongodb linux下启动
- Bulk Insert命令详细
- oracle建表
- mysql学习笔记(6)