關於多條id相同,只取一條記錄得sql語句

2021-09-30 06:01:12 字數 1021 閱讀 4914

sqlserver  2005 中

create table [dbo].[mian](

[id] [int] not null,

[name] [varchar](50) collate chinese_prc_ci_as null,

[age] [int] null,

[state] [bit] not null

--執行2遍,則共8條記錄

insert into mian values(1,'st',27,1)

insert into mian values(1,'tj',28,0)

insert into mian values(2,'2st',45,0)

insert into mian values(2,'2tj',88,0)

div>

id name age state 

1 st   27 1

1 tj    28 0

2 2st 45 0

2 2tj  88 0

1 st   27 1

1 tj    28 0

2 2st 45 0

2 2tj  88 0

執行id有相同,執行有state有1的就取出1的,沒有的就取出0中的任何一條

select * from (select * , row_number() over(partition by id order by state desc) as sequence 

from mian ) a where sequence =1

--where 前要有個表名,^-^

oracle中要如下修改:

select * from (select t.* , row_number() over(partition by t.id order by t.state desc) as sequence 

from mian t )  a where sequence =1

oracle 中要加個別名t,與sqlserver2005中不同,不知道為什麼。

多條重複編號的記錄只取一條

people表 id peoplename,linkmethod表 id peopleid telephone,people表id和 linkmethod表的peopleid有關係,乙個人可能有多個 而且每個人必有 之前限定好的 現在需要乙個檢視,檢視內容為每 個人的 若有多個 則取第乙個 這個檢視...

SQL中遇到多條相同內容只取一條的最簡單實現

sql中經常遇到如下情況,在一張表中有兩條記錄基本完全一樣,某個或某幾個欄位有些許差別,這時候可能需要我們踢出這些有差別的資料,即兩條或多條記錄中只保留一項。如下 表timeand 針對time欄位相同時有不同total和name的情形,每當遇到相同的則只取其中一條資料,最簡單的實現方法有兩種 每當...

SQL中遇到多條相同內容只取一條的最簡單實現

sql中經常遇到如下情況,在一張表中有兩條記錄基本完全一樣,某個或某幾個欄位有些許差別,這時候可能需要我們踢出這些有差別的資料,即兩條或多條記錄中只保留一項。如下 表timeand 針對time欄位相同時有不同total和name的情形,每當遇到相同的則只取其中一條資料,最簡單的實現方法有兩種 1 ...