目錄
175.組合兩個表
176. 第二高的薪水
表1:person
+-------------+---------+表2:| 列名 | 型別 |
+-------------+---------+
| personid | int |
| firstname | varchar |
| lastname | varchar |
+-------------+---------+
personid 是上表主鍵
address
+-------------+---------+firstname, lastname, city, state| 列名 | 型別 |
+-------------+---------+
| addressid | int |
| personid | int |
| city | varchar |
| state | varchar |
+-------------+---------+
addressid 是上表主鍵
解決方案:
小結:select p.firstname , p.lastname, a.city, a.state from person as p
left join address as a on p.personid=a.personid;
inner join:如果表中有至少乙個匹配,則返回行;left join:即使右表中沒有匹配,也從左表返回所有的行編寫乙個 sql 查詢,獲取right join:即使左表中沒有匹配,也從右表返回所有的行;full join:只要其中乙個表中存在匹配,就返回行
employee
表中第二高的薪水(salary) 。
+----+--------+例如上述| id | salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
employee
表,sql查詢應該返回200
作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回null
。
+---------------------+解決方案:| secondhighestsalary |
+---------------------+
| 200 |
+---------------------+
小結:select
ifnull(
(select distinct salary
from employee
order by salary desc
limit 1 offset 1),
null) as secondhighestsalary
select distinct 列名稱 from 表名稱
select column1, column2, columnn
from table_name
limit n ; 取前n條資料/limit n,m (第n條開始,取m條)
select column1, column2, columnn
from table_name
limit [n] offset [m];
資料庫刷題
考慮到可能不是每個人都有位址資訊,我們應該使用outer join而不是預設的inner join。注意 如果沒有某個人的位址資訊,使用 where 子句過濾記錄將失敗,因為它不會顯示姓名資訊。2.編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary select max ...
資料庫刷題2
1 至少連續出現三次的數字 select distinct l1.num as consecutivenums from logs l1,logs l2,logs l3 where l1.id 1 l2.id and l2.id 1 l3.id and l1.num l2.num and l2.nu...
面試刷題 資料庫
1 請回答一下什麼是事務?概念 資料庫事務 transaction 是訪問並可能操作各種資料項的乙個資料庫操作序列,這些操作要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位。事務由事務開始與事務結束之間執行的全部資料庫操作組成。性質 作用 模型 優點 2 內連線和外連線有什麼區別?內連線 外連...