當朋友問你 SQL 語法問題時如果沒有現成的資料庫真的很難幫上忙,並且也不確定自己的回答是不是真的能解決問題;今天就來介紹兩個我常用的 SQL 語法測試網站,並透過解說朋友遇到的題目讓大家快速了解網站的使用方式。
一、SQL Fiddle 簡介二、MySQL Online 簡介三、題目:找出每個 department 中 score 最高的兩個人並以 score 進行排序
1. 用 SQL Fiddle 解題
2. 用 MySQL Online 解題
一、SQL Fiddle 簡介
支援資料庫版本:
介面說明:
- 選擇資料庫及版本
- DDL 區域:CREATE TABLE, INSERT 都在這個地方輸入,按下『Build Schema』即可生成 Schema;
要先生成Schema才能執行SQL
- DML 區域:資料庫操作語言區域
- Result:顯示執行結果
二、MySQL Online 簡介
介面說明:
- 選擇測試語言:除了 MySQL 外,他還能測試 C、Java、R、php…
- 程式碼區域:他的DDL與DML是混合在一起的,所以要測試就全部貼上去
- Result:顯示執行結果
三、題目:找出每個 department 中 score 最高的兩個人,並符合輸出結果的排序
⚒️ 生成題目資料表的 SQL :
目標輸出結果:
這個題目表面上看起來很簡單,實際做起來會遇到一些沒想到的問題,有興趣的小夥伴建議自己先玩玩不要直接看答案,文章後面也會說明這兩種編輯器的最大差異
1. 用 SQL Fiddle 解題
你的 SQL 版本會被限制在 5.6,你需要在許多好用函數都無法使用的狀態下完成這個題目
解題思路:因為 5.6 並沒有 row_number() 這個函數,所以我們要自己製作出來;另外多利用 subquery 的概念讓解答符合題目的輸出結果。
2. 用 MySQL Online 解題
你的 SQL 版本為 8.0,你解題的重點便在於對新的函數是否熟悉
解題思路:MySQL 8.0 是一個重大更新,ROW_NUMBER 這個函數就能讓你以輕鬆的姿態搞定這個題目,如果你不熟悉可以參考這份文檔。
我的解答僅供參考(尚未優化),有興趣的朋友可以在底下留言分享你的做法喔~希望這篇文章能幫助臨時需要寫 SQL 的朋友
▶︎ 如果這篇文章有幫助到你1. 可以點擊下方「Follow」來追蹤我~
2. 可以對文章拍手讓我知道 👏🏻你們的追蹤與鼓勵是我繼續寫作的動力 🙏🏼▶︎ 如果你對工程師的職涯感到迷茫1. 也許我在iT邦幫忙發表的系列文可以給你不一樣的觀點 💡
2. 也歡迎您到書局選購支持,透過豐富的案例來重新檢視自己的職涯