結合多個表選取TOP記錄 join的用法

2021-04-01 23:59:44 字數 839 閱讀 9281

有3個表a,b,c結構如下:

訂單表a(訂單號(主鍵),使用者id(外來鍵),密碼,消費金額,......其它字段);

使用者表b(使用者id(主鍵),使用者姓名,使用者組id(外來鍵),帳號模板id(外來鍵)......其它字段);

使用者組表c(使用者組id(主鍵),使用者組名,......其它字段)

需要用乙個sql語句實現如下查詢結果:

從表a中選擇「消費金額」總額排在前10位的使用者記錄(group by 使用者id)

查詢到的10條記錄中需要包含如下字段資訊:

使用者id,使用者姓名,使用者組名,消費金額總和, 並按消費總額降序排列

方法一:

select top 10 a.使用者id,b.使用者姓名,c.使用者組名,sum(消費金額) as 消費金額總和

from a

left join b on a.使用者id = b.使用者id

left join c on b.使用者組id = c.使用者組id

group by a.使用者id,b.使用者姓名,c.使用者組名

order by 消費金額總和 desc

方法二:

這個的效率高一點的

select aa.使用者id,b.使用者姓名,c.使用者組名,aa.消費金額總和

from (select top 10 使用者id, sum(消費金額) as 消費金額總和

from a group by 使用者id order by 消費金額總和 desc) aa

left join b on a.使用者id = b.使用者id

left join c on b.使用者組id = c.使用者組id

SQL 用JOIN連線多個表

select from table1 inner join table2 on table1.id table2.id 其實 inner join on的語法格式可以概括為 from 表1 inner join 表2 on 表1.欄位號 表2.欄位號 inner join 表3 on 表1.欄位號 ...

SQL語句 用JOIN鏈結多個表

連線兩個資料表的用法 select from actor inner join film actor on actor.actor id film actor.actor id 語法格式可以概括為 from 表1 inner join 表2 on 表1.欄位號 表2.欄位號 連線三個資料表的用法 s...

批量操作相同表名字首中多個記錄的方法

以表名為ztask 1 為例,統計各表中符合條件的記錄數,最大程度上使用shell和mysql命令,達到批量操作的目的。同樣,刪除符合條件的記錄等也可通過替換select count 1 來達到。bin bash table list mysql hxx uxxe pexinie db name e...