1. 程式人生 > >Leetcode Database using MySQL from the EASY ones 準備資料分析面試SQL試題

Leetcode Database using MySQL from the EASY ones 準備資料分析面試SQL試題

考察原理:LEFT OUTER JOIN外聯結

易錯點:

1、 t1 後面不要帶逗號!!!!!

FROM t1
LEFT OUTER JOIN t2

2、聯結包含了兩個表,a表是長一點的,b點裡面只有a表的某些id裡面的具體資訊。這時候要聯結兩個表就要用outer join,而且不可以用where語句,where語句只會呈現同時出現在兩個表裡的那些記錄。同理,“from on t1.a=t2.a”也是不可能跑出正確答案的。

常見句式: “計算/列出 XXX , 包括哪些沒有/尚未……的。”

標準答案中要注意的點或提示:

1、Distinct的使用:萬一有兩個同樣高的值呢,答案只要一個

2、用子查詢的效率會低一些

3、LIMIT: 常用的考題應該是,“只查詢前幾行”、“只查詢前五名/前十條”,這一題只選擇第二高的工資,萬一想查詢第二到第五高的工資呢?媽呀我舉一反三的能力真強:

mysql> SELECT * FROM ratings ORDER BY category, id LIMIT 5;
這裡取的是ratings前五名的全部記錄。LIMIT 在ORDER BY的後面。

limit後面帶一個數的時候是上者,帶兩個數的時候是下者,注意第一個數有不一樣的含義。

SELECT * FROM tbl LIMIT 5,10;  # 返回 rows 6-15

第一個數字,是開始的行數,第二個數是最多返回的條數(最小的數字是0而不是1)

4、IFNULL: IF家族一個成員,

If expr1 is not NULLIFNULL() returns expr1; otherwise it returns expr2.

這個解法就會覆蓋瞭如果沒有這個值的時候顯示的是啥的問題。

第一眼,一個表裡的某些資訊又是某個表裡的某些資訊,自然就是自結合,self join啦。原理是對同一個表格命名成兩個不一樣的表格,但是用的資料都一樣。

兩種語法,join & where

見到比較優秀的答案,where exists