sql用inner join內關聯查詢有多條記錄一樣只取一條

2021-03-29 00:24:59 字數 1681 閱讀 2645

1樓:匿名使用者

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

2樓:相約

級聯查詢的時候,主表和從表有一樣的欄位名的時候,在mysql上命令查詢是沒問題的。但在mybatis中主從表需要為相同欄位名設定別名,設定了別名就ok了。

解決辦法:

1.一對多不能用association,要用collection:根據經驗,使用association這個元素很容易出錯,建議在resultmap中先換一種寫法,不要用association。

2.修改測試一下,如果成功的話,就基本可以去頂是association的問題了,之後查一下association詳細資料,應該能解決。如果不是association的問題,就調查一下配置檔案等等,總能夠解決的。

3.resultmap配置有問題:發現問題的關鍵在於resultmap中如果不定義類似主鍵之類的能夠區分每一條結果集的欄位的話,會引起後面一條資料覆蓋前面一條資料的現象。

left join 右表對應多條記錄取第一條

3樓:四舍**入

可以參考下面的**「」

select a.*,

ifnull(b.time,'') as time,ifnull(b.txt,'') as txtfrom tablea as a

left join tableb as bon a.tid = b.tid

group by a.tid

order by a.tid.

擴充套件資料:

left join 關鍵字會從左表 (table_name1) 那裡返回所有的行,即使在右版表 (table_name2) 中沒有匹配的行。權

left join 關鍵字語法

select column_name(s)from table_name1

left join table_name2on table_name1.column_name=table_name2.column_name

4樓:匿名使用者

select * from

(select t.*,row_number() over (order by b中重抄復欄位

襲 ) rn

from (a left join b) t)where rn = 1

大概bai

思路自己

du研究哈zhi

呵呵dao

這個用SQL語句怎麼寫,這個用SQL語句怎麼寫

select namef 名字,sum decode score,勝 1,0 勝,sum decode score,負 1,0 負 from ss group by namef ss是表名,namef是欄位名,就是每個隊名對應的欄位,名字 是別名,勝 負 都是別名,sum decode score,...

SQL遊標如何使用,SQL遊標怎麼用

遊標可以從資料庫中查詢出一個結果集,在你關閉它之前,你可以反覆使用這個結果集,讀取這個結果集中的任意行任意欄位的內容,一般在儲存過程或前臺程式中常見。你學過fox嗎?可以說是和那個裡面的差不多吧,就是一個意思 遊標可以從庫裡的結果集裡面取東西,一條一條的 在sql指令碼中怎麼使用遊標?declare...

SQL基礎問題,用SQL語句完成下列問題。

一樓的很正確 把語句也都寫出來了。在這我只是給解釋一下。create table tb user 建立一個表 create table 表名。userid int not null,列明userid 資料型別 int 整數 null not null 指該列是否接受空值 null表示接受。其它列依次...