最近在審核sql的時候,發現一些開發經常犯這個錯誤,下面我舉個簡單的例子,說明一下:
查詢出a表和b表id相同的記錄(並且把b表沒有的id記錄也查詢出來),且name名字等於'b'的記錄。
表資料:
mysql> select * from t1;+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | e |
| 6 | b |
+----+------+
6 rows in set (0.00 sec)
mysql> select * from t2;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | cc |
| 4 | e |
| 5 | b |
+----+------+
5 rows in set (0.00 sec)
錯誤寫法:
mysql> select * from t1 left join t2 on t1.id=t2.id and t1.name='b';+----+------+------+------+
| id | name | id | name |
+----+------+------+------+
| 2 | b | 2 | b |
| 1 | a | null | null |
| 3 | c | null | null |
| 4 | d | null | null |
| 5 | e | null | null |
| 6 | b | null | null |
+----+------+------+------+
6 rows in set (0.00 sec)
正確寫法:
mysql> select * from t1 left join t2 on t1.id=t2.id where t1.name='b';+----+------+------+------+
| id | name | id | name |
+----+------+------+------+
| 2 | b | 2 | b |
| 6 | b | null | null |
+----+------+------+------+
2 rows in set (0.00 sec)
呵呵,可以當一道面試題了。
經常犯得的小錯誤
1.bool定義時候需要加標頭檔案 include 2.強制型別轉換的原理 只是在轉換的過程中臨時生成乙個變數來代替原來的量,當操縱結束的時候,這個臨時變數也消失。類似這樣的注釋,只能把while 1 這個東西注釋掉,最終程式還是會執行一次printf 預處理結果。4.scanf d num i d...
C 開發者最經常犯的 8 個錯誤
在和c 新手一起工作的時候,我注意到他們經常重複一些錯誤。這些錯誤,當你指出來的時候很容易理解。然而,如果乙個開發者沒有意識到這些錯誤,將會影響正在開發的軟體的質量和效率,因此,我決定總結8個常見的錯誤。1.使用字串連線代替stringbuilder 在你向乙個字串追加新字串的時候,字串連線方法是可...
if else判斷語句中經常犯的乙個錯誤
解法 如果我這麼寫,執行一下看看。當輸入小於0和0 50之間的數時,均正常輸出,但是!當輸出大於50的時候,就出現了如上圖所示的問題 輸入59以後,不但輸出了超過50,還輸入了小於0,這顯然不是我要的結果!為何呢?這就涉及else的執行原理了 else會在上乙個if判斷為false時執行!這時候可以...