1. 在sql中怎樣統計同一個姓的人數
select count(1) from users where name like '張%'余羨
統計users表中姓豎談拍張的人數侍雀
2. sql 查找一張表中重復的個數
1、查找表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷
select * from people
where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)
2、刪除表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷,只留有rowid最小的記錄
delete from people
where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多餘的重復記錄(多個欄位)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having
count(*) > 1)
4、刪除表中多餘的重復記錄(多個欄位),只留有rowid最小的記錄
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多餘的重復記錄(多個欄位),不包含rowid最小的記錄
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having
count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方說
在A表中存在一個欄位「name」,
而且不同記錄之間的「name」值有可能會相同,
現在就是需要查詢出在該表中的各記錄之間,「name」值存在重復的項;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果還查性別也相同大則如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主欄位,count(*) from 表名 group by 主欄位 having
count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主欄位 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有兩個意義上的重復記錄,一是完全重復的記錄,也即所有欄位均重復的記錄,
二是部分關鍵欄位重復的記錄,比如Name欄位重復,而其他欄位不一定重復或都重復可以忽略。
1、對於第一種重復,比較容易解決,使用
select distinct * from tableName
就可以得到無重復記錄的結果集。
如果該表需要刪除重復的記錄(重復記錄保留1條),可以按以下方法刪除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
發生這種重復的原因是表設計不周產生的,增加唯一索引列即可解決。
2、這類重復問題通常要求保留重復記錄中的第一條記錄,操作方法如下
假設有重復的欄位為Name,Address,要求得到這兩個欄位唯一的結果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最後一個select即得到了Name,Address不重復的結果集(但多了一個autoID欄位,實際寫時可以寫
在select子句中省去此列)
(四)查詢重復
select * from tablename
where id in (select id from tablename group by id having count(id) > 1)
(五)另一個經典方法 刪除欄位filed重復的
SELECT min(ID) as id into #TBA FROM table group by filed order by id
delete from table where id not in (select id from #TBA)
求採用,個人精髓!
3. 寫一個sql 查詢一個表中姓名相同的記錄,並把數據按照重復的次數從高到低排列顯示
select姓名列,count(1)as[重復次數]from表名groupby姓名列havingcount(1)>=2orderby重復次數desc
4. 用sql 語言怎樣 查詢同名同姓學生名單,並統計同名人數
select 姓名,count(學號) as num
from 學生表
group by 姓名
having count(學號)>1 --保證查找到的都是存在2個以上(包括2)的同名同姓的姓名及人數。
5. SQL統計一張表中同名同姓的人次
SELECT 姓名
FROM 表
WHERE 姓名 in(select 姓名 from 表 group by 姓名 having count(*)>1)
order by 姓名
6. sql語句中在學生信息表中查詢同姓的學生姓名
1.創建一個測試表,如下圖
createtabletest_name(idint,namevarchar2(20));
注意事項:
SQLServer的特點如下
1.具有真實的客戶端和伺服器架構架構。
2.圖形用戶界面使系統管理和資料庫管理更加直觀。
3.豐富的編程介面專用工具,為用戶進行程序設計提供了更多的選擇。
4.它是完全集成的,利用了NT的許多功能,比如發送消息和接收消息。
7. sql語句中怎樣查詢學生表中所有有著相同的名字的人的信息
方法一:select *from 學生表
where name in 姓名
方法二:
selecct 姓名
from 學生表
group by 姓名
having count(*)>1
如果 having 子句不加,則是統計各名字的數量,加上則只顯示 數量大於 1 的人名。
(7)sql統計表中姓名相同的用戶數擴展閱讀:
sql 學生表中如何查詢與某同學同年的人
SELECT*FROM學生表T1
WHERE EXISTS(SELECT1
FROM學生表T2
WHEREYEAR(T1.生日) = YEAR(T2.生日)
AND 學生編號 = '某同學學生編號')
YEAR是取datetime類型數據的年部分的函數,只要表中的數據存在年份和某學生生日的年份相同就可以。
8. 求個SQL語句啊 在系統資料庫中查詢出所有重名並且手機號碼一樣的用戶
很簡單,無需使用高級函數即可實現,假設你的表是用戶表,表中有姓名和電話兩列:
select 姓名,電話,count(*) as '條數' from 用戶表
group by 姓名,電話
having count(*)>1
即可找出用戶姓名,電話,以及重復條數。
如果高級一點的,可以使用開窗函數,進行組內排名,比如使用rank函數也可以實現。
9. sql語句中怎樣查詢學生表中所有有著相同的名字的人的信息
如果每個學生只有一條記錄的話,按姓名分組,統計輪襪滾記錄條數(大於1),再這些有相同姓名條數的人的姓名作為條件,檢索出相應信息
語句如下:
select
*
from
學生表
where
姓臘余名
in
(selecct
姓名
from
學生好伍表
group
by
姓名
having
count(*)>1
)