1樓:匿名使用者
select top 1 * form 表2 where id=(select id form 表1 order by id esc) order by time desc
top 1 選出第一條記錄
order by time desc 按時間倒序排列,這樣第一條記錄就是日期最晚的記錄了內
id=(select id form 表1 order by id esc)表一中的id與表二容中相等的id
sql根據某一個欄位重複只取第一條資料
2樓:
使用分析函式row_number() over (partiion by ... order by ...)來進行分組編號,然後取分組標號值為1的記錄即可。
目前主流的資料庫都有支援分析函式,很好用。
其中,partition by 是指定按哪些欄位進行分組,這些欄位值相同的記錄將在一起編號;order by則是指定在同一組中進行編號時是按照怎樣的順序。
示例(sql server 2005或以上適用):
select s.*
from (
select *, row_number() over (partition by [手機號] order by [店鋪]) as group_idx
from table_name
) swhere s.group_idx = 1
3樓:匿名使用者
用group by 最後一個欄位 用個max()
4樓:發生等將發生
如果僅僅只是查詢出來去從,那麼就用distinctselect distinct 需要去重的列明(允許多列) from table
如果是需要在表中刪除,可以這樣處理
1、建立臨時表,將重複記錄查詢出來去重插入到臨時表2、刪除實表中的重複記錄
3、將臨時表中的記錄插入到實表
處理完成
5樓:匿名使用者
select * into ##tmp_table from 表where 1=2
declare @phoneno int
declare cur cursor forselect 手機號 from 表 group by 手機號open cur
fetch next from cur into @phonenowhile @@fetch_status=0begin
insert into ##tmp_tableselect top 1 from 表 where 手機號=@phoneno
fetch next from cur into @phonenoendselect * from ##tmp_tabledrop table ##tmp_table
6樓:匿名使用者
最簡單的 select distinct (手機號)
7樓:老漢肆
select
temp.id,
temp.device_id,
temp.update_dtm,
temp.test_result
from (
select
t.id,
t.device_id,
t.update_dtm,
t.test_result,
row_number() over(partition by device_id order by t.update_dtm desc) as row_***
from device_info_tbl t ) tempwhere temp.row_*** = '1'
sql用inner join內關聯查詢有多條記錄一樣只取一條?
8樓:匿名使用者
select min(b.flow_id),a.item_id from test_table a inner join test_table b on a.
flow_id!=b.flow_id and a.
item_id=b.item_id where a.def_sup_flag=1 group by a.
item_id
--應該是這樣寫吧
--不過我覺得你是要實現的功能是不是,def_sup_flag等於1,如果item_id相同就取第一條記錄
select t.* from test_table t
inner join (
select min(flow_id) flow_id from test_table
where def_sup_flag=1 group by item_id) t2
on t.flow_id=t2.flow_id
9樓:相約
級聯查詢的時候,主表和從表有一樣的欄位名的時候,在mysql上命令查詢是沒問題的。但在mybatis中主從表需要為相同欄位名設定別名,設定了別名就ok了。
解決辦法:
1.一對多不能用association,要用collection:根據經驗,使用association這個元素很容易出錯,建議在resultmap中先換一種寫法,不要用association。
2.修改測試一下,如果成功的話,就基本可以去頂是association的問題了,之後查一下association詳細資料,應該能解決。如果不是association的問題,就調查一下配置檔案等等,總能夠解決的。
3.resultmap配置有問題:發現問題的關鍵在於resultmap中如果不定義類似主鍵之類的能夠區分每一條結果集的欄位的話,會引起後面一條資料覆蓋前面一條資料的現象。
一個表中有重複記錄如何用sql語句查詢出來。。。?
10樓:匿名使用者
不知道你什麼資料庫.
如果資料庫支援 row_number() 函式的話, 倒是很省事的.
-- 首先建立測試表
create table test_delete(name varchar(10),
value int
);go
-- 測試資料,其中 張三100 與 王五80 是完全一樣的insert into test_deleteselect '張三', 100
union all select '張三', 100union all select '李四', 80union all select '王五', 80union all select '王五', 80union all select '趙六', 90union all select '趙六', 70go-- 首先查詢一下, row_number 效果是否滿足預期select
row_number() over (partition by name, value order by (select 1) ) as no,
name,
value
from
test_delete
no name value----- ---------- -----------1 李四 801 王五 802 王五 801 張三 1002 張三 1001 趙六 701 趙六 90從結果上可以看到,如果有重複的,完全一樣的話, no 是有大於1的。
11樓:彭文傑
select row_number() over(partition by 排序欄位 order by 不同的欄位 desc) as num,
t.*from table
where num = 2
SQL多表查詢
wlkc.item desc select from bom where bom.item like trim edit2.text 這個等於就會報錯,因為後面查詢的不是一個值,而且不一定是一個欄位,關聯要用id 去查 比如說 select from a where a.id in select i...
mybatis聯合多表查詢resulttype怎麼寫
select c.class id,c.class name,s.s id,s.s name from class c left join classstudent cs on c.class id cs.class id left join student s on cs.student id s...
SQL查詢問題(統計模組查詢功能多表複雜查詢)請教SQL達人
請參考以下語句 select t1.rq1 as rq isnull x.xs m,0 as xs m,isnull c.cg m,0 as cg m from select rq as rq1 from cgunion select rq from xs as t1left join select...