1. 程式人生 > >MySql的join(連線)查詢 (三表 left join 寫法)

MySql的join(連線)查詢 (三表 left join 寫法)

1、內連線:將兩個表中存在連結關係的欄位符合連線條件的記錄形成記錄集

Select A.name,B.name from A inner join B on A.id=B.id和

Select A.name,B.name from A,B where A.id=B.id結果是一樣的(內連線的inner關鍵字可省略);

2、外連線:分為左外連線和右外連線

左連線A、B表結果包括A的全部記錄和符合條件的B的記錄。

右聯結A、B表的結果和左聯結B、A的結果是一樣的,也就是說:

Select A.name,B.name from A Left Join B on A.id=B.id和

Select A.name,B.name from B Right Join A on B.id-A.id執行後的結果是一樣的。

3、全聯結

4、無聯結

5、三表聯結查詢

select username,psw,gname,tel from (t1 left join t2 on t1.t1_id=t2.t1_id) left join t3 on t1.t1_id=t3.t1_id

6、終極的三表聯結查詢

items:商品表,item_visit_stats:商品訪問表,item_trade_stats:商品銷售表

SELECT i.num_iid, i.title, i.price, SUM(iv.user_visits) AS uv,it.buyer_num,it.item_num,it.item_num*i.price AS turnover
FROM (items AS i RIGHT JOIN item_visit_stats AS iv ON i.num_iid=iv.num_iid)
LEFT JOIN (SELECT num_iid,SUM(buyer_num) AS buyer_num,SUM(item_num) AS item_num FROM item_trade_stats
WHERE seller_nick="XXXX" AND business_day BETWEEN '2010-08-14' AND '2010-08-15' GROUP BY num_iid)
AS it ON it.num_iid=iv.num_iid 
WHERE i.nick="XXXX" AND iv.business_day BETWEEN '2010-08-14' AND '2010-08-15'
GROUP BY i.num_iid ORDER BY uv DESC