sql 語句查詢 按某欄位去重 保留按某個欄位排序top1
例子:
create table tablename (id int identity(1,1),attachid int,name varchar(10)) insert into tablename values(23,'sss') insert into tablename values(33,'sdfs') insert into tablename values(33,'4434') insert into tablename values(45,'dsdsd') select * from tablename as a where not exists (select 1 from tablename where attachid=a.attachid and name<a.name)
按某個欄位去重 保留按某個欄位排序的最大/小值
後面括號裡的意思是再從原表中找有沒有比當前記錄相同欄位的比較欄位更大或更小的 如果有 則不插入 如果沒有 則插入
exists 是個條件 後面的結果集有值的時候 條件成立 後面結果集為空的時候 條件不成立 所以後面子查詢中select 後面跟什麼欄位不重要 關鍵是看結果集是否為空
加not 是取相反的意思
name <a.name 是取最小的 反之是取最大的
原資料
id attachid name
1 23 sss
2 33 sdfs
3 33 4434
4 45 dsdsd
比較後
id attachid
name
----------- ----------- ----------
1 23 sss
3 33 4434
4 45 dsdsd
注意:from後面不能跟別名只能跟臨時表 #table
複雜一點的例子:
查詢 WorkFlowTask 表中 ReceiveID為某值 而且狀態是2或者3的 記錄 而且在同樣GroupID 中只保留時間最新的 並且結果按完成時間排序
(select * from ( SELECT *,ROW_NUMBER() OVER(ORDER BY CompletedTime1 DESC) AS PagerAutoRowNumber FROM WorkFlowTask WHERE ReceiveID='00000000-0000-0000-0000-000000009667' AND [Status] IN(2,3) ) as a where not exists --其實後面只是一個查詢條件(包含子查詢) (select 1 from WorkFlowTask where GroupID=a.GroupID and ReceiveTime>a.ReceiveTime and ReceiveID='00000000-0000-0000-0000-000000009667' AND [Status] IN(2,3) )
相關推薦
sql 語句查詢 按某欄位去重 保留按某個欄位排序top1
例子: create table tablename (id int identity(1,1),attachid int,name varchar(10)) insert into tablename values(23,'sss') insert into tabl
根據某個欄位去重 根據另一個欄位排序的一個SQL
背景:一張表 有 name , crt_time , work_sts 三個欄位 這張表裡存在這樣的資料 'a', '2018-12-18 21:37:24', '未''a', '2018-12-19 09:37:24', '完''a', '2018-12-19 21:37:24', '未''b', '2
es Java 聚合方法——單個欄位去重並輸出部分欄位資訊
注意事項:版本號:5.5.1topHits方法是獲取從上向下的k條資料,k通過size(k)開設定,對於去重來說,這裡k=1fetchSource(String[] includes,String[] excludes)是獲取部分欄位,引數為兩個字串陣列,includes為要
SQL語句查詢重複欄位並按數量排序
SQL語句 描述:exhibitiononline表主鍵exhiid, exhibitor表有外來鍵 exhid,對應表 exhibitiononline的主鍵exhiid; exhibitiononline表--------->
sql語句查詢某欄位中包含指定字串的資料列表,完全匹配欄位中逗號中間的字串資料
查詢出,使用者表中name欄位完全包含小明的資料資訊 User表 id name userInfo 1 小明,明明 很帥 2 小明,李明 3 明天,李強 SELECT * FROM `User` where concat(',
mysql 關於某欄位去重查詢
使用distinct 和 group by 對於查詢多欄位,而只對一個欄位去重是查不到正確值得,因為distinct 後面跟多欄位,mysql會對只有這些子對完全重複才能去重,而group by 查詢的欄位也只能在 group
查詢:對某一欄位去重,並獲得其他欄位資訊
想在table1表中,查公司中的員工名字有哪些,table1表中員工有重名的情況,所以要對員工名去重,並且要得到員工名字、及其對應的部門號dept_id 即:對name欄位去重,並獲得name, dept_id 欄位 在thinkphp3.2 中 $table1= M('table1
使用一條sql語句查詢兩個表的某個欄位為某個值時
使用一條sql語句查詢這兩個表的分數相同的人的名字(使用聯合查詢) create table a( id int(10), score int(3), name varchar(20), )charset utf8; create table
帝國CMS,使用sql語句查詢時,有些欄位不顯示
使用sql查詢資料時,有些欄位不顯示,比如<?=$bqsr[classname]?>顯示為空,或者其他的。 [e:loop={'select classid,classpath,classname from [!db.pre!]enewsclass where
根據兩個欄位去重SQL語句
delete from aop_app_ipmlinfo a where a.impl_id not in ( select max(t.impl_id) c from aop_app_ipmlin
MYSQL中SQL語句查詢表字段名、註釋、欄位型別
select column_name,column_comment,data_type from information_schema.columns where table_name='你的表名'
SQL語句查詢時有欄位為中文時的解決方法
我在寫JDBC的是時候,遇見了因為在SQL語句中含有中文無法執行的情況,於是我把這句話放到mysql客戶端中測 試,結果通過,我就估計不是字元編碼問題,是PreparedStatement這個介面做了一些我不知道的處理導致這個問題的 發生。而且一般直接使用?問號代替動態查詢要求,而在客戶端中必須加上雙引號,
SQL語句distinct的多個欄位去重問題
經典例子 select distinct name, id from table 或者 select name,id from table group by name 像這樣是錯誤的寫法,distinct不起作用的 曲線救國寫法: select name,id f
SQL語句怎麼對單個欄位去重,並且要顯示所有列(也可用於去重後,顯示最新資料)
取最大id: select * from 表名 where 主鍵 in(select max(主鍵) from 表名 group by 要去重的欄位 ) 取最新時間:(時間並列會全部展示) select * from 表名 where date in(sel
sql語句查詢某表裡是否存在重複資料
SELECT * FROM ( SELECT re_unid, COUN
java8中List根據某一欄位去重
前言 在做一個記錄操作日誌功能,根據型別及稽核使用者名稱稱去查詢操作日誌。稽核使用者名稱稱,在這裡將資料全部查詢出來了,可是我只想要每個人的姓名,而不是出現重複人名,比如:楊平,出現了好多。如何解決此問
【轉】mysql查詢根據部分欄位去重
mysql有個關鍵字distinct用來去重的,但是使用時只能放在查詢欄位的最前邊 如: SELECT DISTINCT user_id,age FROM t_user; 若不是放在最前邊,如: SELECT user_id, DISTINCT age FROM t_us
pyspark 根據某欄位去重 取時間最新
cj_spouse_false = cj_spouse_false.withColumn("row_number", \ F.row_number().over(Window.partition
php 二維陣列根據某欄位去重
有時候,查詢出來的陣列會有好多重複的資料,要想去除這些資料,有以下幾種方法: 第一種:二維陣列中直接去掉重複的鍵 <?php function array_unique_fb($array2D){ foreach ($array2D as $v){ $v=joi
多個欄位去重後進行求和-SQL
【問題】怎樣對多個欄位進行分別去重後再對其求和; 【解法】 相當於把多個欄位的字串連線起來: select count(DISTINCT fcode+cast(fread_date as varchar(30))) from my_table http: