如何用SQL查询表中firstname和lastname两列值相同的所有记录
SQL查询方案
1. 筛选所有存在姓名重复的记录
即查询所有firstname和lastname完全一致、出现过至少2次的全部条目,兼容不同数据库的写法如下:
- 写法一(适配MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)
SELECT firstname, lastname, age FROM ( SELECT *, COUNT(*) OVER (PARTITION BY firstname, lastname) AS same_name_cnt FROM 你的实际表名 ) tmp WHERE same_name_cnt > 1;
- 写法二(适配所有数据库版本,兼容性最好)
SELECT firstname, lastname, age FROM 你的实际表名 WHERE (firstname, lastname) IN ( SELECT firstname, lastname FROM 你的实际表名 GROUP BY firstname, lastname HAVING COUNT(*) > 1 );
2. 查询特定姓名的所有记录
如果仅需要查询firstname为john、lastname为doe的所有条目,直接加查询条件即可:
SELECT firstname, lastname, age FROM 你的实际表名 WHERE firstname = 'john' AND lastname = 'doe';
注:请将上述SQL中的你的实际表名替换为你自己的数据表名称
内容的提问来源于stack exchange,提问作者Can
相关产品推荐
相关产品推荐

