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 ...