最近在進行乙個資料展示的專案,問題是公司目前的情況是採集到了資料,將資料存入到了乙個資料中心,然後就沒有任何操作了。也就是說要從原始資料當中查詢資料進行資料展示,這是乙個很難受的過程,但是又是乙個要必然經歷的過程,因為原始資料來了之後,必然要通過實際的業務來檢驗資料的正確性,有效性和質量,然後就對應的業務資料進行清洗,提取存入業務庫,方便以後的操作。然後後端**基本上沒怎麼寫,全部都思考查詢sql應該怎麼寫了。
多個表聯合查詢,這種方式如果不新增where條件的話會產生笛卡兒積 但是新增了where條件的話又相當於inner join 內連線
select * from 表a,表b where a.xx=b.xx
這種就相當於上面交叉連線新增了where條件。同時可以省略掉inner ,只寫join。
內連線返回資料是條件相等的資料。也就是交集
select * from 表a inner join 表b on a.xx=b.xx
外連線分為 left join 和right join。
left join(左外連線)表示以左邊的表為主表,無論on後面的條件是否滿足,都會返回左邊的表的資料。
right join(右外連線)表示以右邊的表為主表,無論on後面的條件是否滿足,都會返回右邊的表的資料。
select * from 表a left join 表b on a.xx=b.xx
select * from 表a right join 表b on a.xx=b.xx
全連線(full join),返回的是全部的資料。
select * from 表a full join 表b on a.xx=b.xx
但是在mysql當中是不支援 full join的 需要通過左外連線+union + 右外連線實現。
這個的話,在網上找了很多資料,也自己建立了很多的假資料進行驗證,驗證過程很簡單就不記錄了。
在同樣的條件下
left join 和right join 效率是一樣的。
同時:inner join > outer join > full join
** sql 中各種連線 join深入理解sql的四種連線-左外連線、右外連線、內連線、全連線
SQL表連線的幾種方式
一 關係代數 合併資料集合的理論基礎是關係代數,它是由e.f.codd於1970年提出的。在關係代數的形式化語言中,用表 或者資料集合表示關係或者實體,用行表示元組,用列表示屬性。關係代數包含以下8個關係運算子 1.選取 返回滿足指定條件的行。2.投影 從資料集合中返回指定的列。3.笛卡爾積 是關係...
sql表連線的幾種方式
這裡有兩張表tablea和tableb,分別是姓名表和年齡表,用於我們例子的測試資料 tablea id name 1 t1 2 t2 4t4 tableb id age 1 18 2 203 19 在開發中我們的業務需求有時候是複雜的,多張表聯合查詢的時候是有多種方式的,面對不同的需求,靈活使用不...
sql表連線的幾種方式
這裡有兩張表tablea和tableb,分別是姓名表和年齡表,用於我們例子的測試資料 tablea idname1t1 2t24t4 tableb idage118 220319 在開發中我們的業務需求有時候是複雜的,多張表聯合查詢的時候是有多種方式的,面對不同的需求,靈活使用不同的表連線方式,那麼...