查询SQL表中某几个字段值有重复的记录

本文介绍了一个复杂的SQL查询案例,该查询旨在从BXSK_Tab3表中筛选特定的数据记录。主要针对2008年4月的数据,找出重复次数大于1次的记录,并按skid和upyear排序。
SELECT *
FROM BXSK_Tab3
WHERE (skid IN
          (
SELECT skid
         
FROM BXSK_Tab3
         
WHERE (upYear = 2008AND (upMonth = 4)
         
GROUP BY skid
         
HAVING (COUNT(skid) > 1)) 

and

upyear 
IN
          (
SELECT upyear
         
FROM BXSK_Tab3
         
WHERE (upYear = 2008AND (upMonth = 4)
         
GROUP BY upyear
         
HAVING (COUNT(upyear) > 1))


)
ORDER BY skid,upyear
在 MySQL 中,若需要查询中某些字相同的记录,可以使用 `GROUP BY` 和 `HAVING` 子句来实现。具体方法是通过分组统计相同字的出现次数,然后筛选出重复出现的[^3]。 ### 查询中指定字相同的记录 假设有一个 `your_table`,并且希望查找字 `col` 中相同的记录: ```sql SELECT * FROM your_table WHERE col IN ( SELECT col FROM your_table GROUP BY col HAVING COUNT(col) > 1 ); ``` 此查询会返回 `col` 字重复的所有记录。 ### 查询多个字组合相同的记录 如果需要查找多个字(例如 `col1` 和 `col2`)组合相同的记录,可以扩展上面的查询: ```sql SELECT * FROM your_table WHERE (col1, col2) IN ( SELECT col1, col2 FROM your_table GROUP BY col1, col2 HAVING COUNT(*) > 1 ); ``` 此查询会返回 `col1` 和 `col2` 组合重复的所有记录。 ### 查询结果说明 - **子查询部分**:`SELECT col FROM your_table GROUP BY col HAVING COUNT(col) > 1` 用于查找重复的字。 - **主查询部分**:`SELECT * FROM your_table WHERE col IN (...)` 用于获取所有包含重复记录。 - **多字查询**:通过将多个字放入 `IN` 子句或使用 `(col1, col2)` 的形式,可以扩展查询以支持多字组合。 ### 示例 假设 `employees` 的数据如下: | id | name | department | |----|-------|------------| | 1 | Alice | HR | | 2 | Bob | IT | | 3 | Alice | HR | | 4 | Carol | Finance | | 5 | Alice | IT | #### 查询 `name` 字重复记录 ```sql SELECT * FROM employees WHERE name IN ( SELECT name FROM employees GROUP BY name HAVING COUNT(name) > 1 ); ``` **结果**: | id | name | department | |----|-------|------------| | 1 | Alice | HR | | 3 | Alice | HR | | 5 | Alice | IT | #### 查询 `name` 和 `department` 字组合重复记录 ```sql SELECT * FROM employees WHERE (name, department) IN ( SELECT name, department FROM employees GROUP BY name, department HAVING COUNT(*) > 1 ); ``` **结果**: | id | name | department | |----|-------|------------| | 1 | Alice | HR | | 3 | Alice | HR | ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值