sql中left join from多個表怎麼寫

時間 2021-08-30 15:07:48

1樓:兔丞飛

sql中left join from 多個表應該這樣寫:

select   a.id, 其他欄位

from a,b,c,d  left   join e

on e.id=a.id

left join f on f.id=c.id

1、兩個表連線

select a.*,b.* from a left join b on a.id =b.id;

2、三個以上

select a.*,b.* from a left join b on a.id=b.id left join c on a.id=b.id where …;

注:可以有多種變換,連線條件,顯示欄位跟具體結合具體場景靈活運用。

擴充套件資料

select colunm_name1,colunm_name2

from table_name1

left join table_name2

on table_name1.colunmname=table_name2.colunmname

其中join_table指出參與連線操作的表名,連線可以對同一個表操作,也可以對多表操作,對同一個表操作的連線稱為自連線, join_type 為連線型別,可以是left join 或者right join 或者inner join 。

2樓:大野瘦子

1、兩個表連線

select a.*,b.* from a left join b on a.id =b.id;

2、三個以上

select a.*,b.* from a left join b on a.id=b.id left join c on a.id=b.id where …;

注:可以有多種變換,連線條件,顯示欄位跟具體結合具體場景靈活運用。

sql語句中的多表關係

一對多:用於去重,left join 要連線的表 on 唯一欄位(標識) = 多欄位

一對一 :用於查詢,left join 要連線的表 on 唯一欄位 = 唯一欄位

多對一:用於分組,left join 要連線的表 on 多欄位 = 唯一欄位

例項:select   r.roleid,r.

rolename,r.deptid,d.deptname,group_concat(m.

menuname separator ',' ) menuname

from js_role r

left join js_role_menu rm on r.roleid = rm.roleid

left join js_menu m on m.menuid = rm.menuid

left join js_dept d on d.deptid = r.deptid

group by r.roleid

注:group_concat(m.menuname separator 『,』 ) - 表示:按組,合併列表中的menuname欄位並以』,'分隔

3樓:匿名使用者

sql中left join from 多個表具體**如下:

select   r.roleid,r.rolename,r.

deptid,d.deptname,group_concat(m.menuname separator ',' ) menuname

from hj_role r

left join hj_role_menu rm on r.roleid = rm.roleid

left join hj_menu m on m.menuid = rm.menuid

left join hj_dept d on d.deptid = r.deptid

group by r.roleid

拓展資料:

論sql語句中的多表關係:

一對多 - 用於去重 - left join 要連線的表 on 唯一欄位(標識) = 多欄位

一對一 - 用於查詢 - left join 要連線的表 on 唯一欄位 = 唯一欄位

多對一 - 用於分組 - left join 要連線的表 on 多欄位 = 唯一欄位

參考資料:論sql語句中的left join-多表關係--csdn

4樓:康熙轉世

你這樣寫只是d去left join不是abcd都去join 所以on條件找不到a.id和c.id

如果要改

select * from (select a.id a_id,c.id c_id。。。

from a,b,c,d) t on e e.id=t.a_id left join f on f.

id=t.c_id

5樓:匿名使用者

如果只是為了學習,建議不要一下子高這麼複雜,給你舉個例子就明白了兩個表連線

select a.*,b.* from a left join b on a.id =b.id;

三個以上

select a.*,b.* from a left join b on a.id=b.id left join c on a.id=b.id where ……

可以有多種變換,連線條件,顯示欄位跟具體結合具體場景靈活運用

6樓:匿名使用者

select * from a left join e on e.id=a.id left join f on f.id=c.id

7樓:寂靜_夜晚

個人感覺不是以上二樓的錯誤原因~~~

select * from 這裡的 * 包含了多個id,而這些id是那一個表的id,系統不知道

(例如select * 包含的id,是a表的id,還是e表的id還是f表的id???)

應該這樣寫:

select a.id, 其他欄位

from a,b,c,d left join eon e.id=a.id

left join f on f.id=c.id

sql中怎麼查詢名稱以,SQL中怎麼查詢名稱以 A

海天盛 1 建立測試表,如下圖。create table test col 1 id number,var varchar2 200 create table test col 2 id number,var varchar2 200 2 插入測試資料,如下圖。insert into test co...

sql中多條件排序問題,SQL中多條件排序問題

第一步 確定輸出內容,你要的欄位為name,資料結果為b,d,a,c 第二步 找規律,b d的online為1 a c的位說明是按online 降序 然後來看下 b d的online相同,viewnum為30和10,那麼就是viewnum降序 如果a c的viewnum也是降序那麼規律就找到了,發現...

sql中或如何表示,sql中怎麼表示“不等於”(資料庫,SQL)

是用 or 來表示的 將兩個條件組合起來,在一個語句中使用多個邏輯運算子時,在and 運算子之後對or運算子求值,不過使用括號可以更改求值的順序 語法 boolean expression or boolean expression 引數 boolean expression返回 true fals...