5、6.合并
5-1.175.组合两个表
1)左联结(left outer join),联结结果保留左表的全部数据
2)右联结(right outer join),联结结果保留右表的全部数据
3)内联结(inner join),取两表的公共数据
1 # Write your MySQL query statement below 2 SELECT 3 Person.firstname firstName,Person.lastname lastName,Address.city,Address.state 4 FROM 5 Person LEFT OUTER JOIN Address ON Person.personID = Address.personID; //别忘了:on 两个表联结条件!!
5-2.1581.进店却未进行过交易的顾客
LEFT OUTER JOIN + GROUP
1 # Write your MySQL query statement below 2 SELECT customer_id,COUNT(customer_id) count_no_trans 3 FROM 4 Visits LEFT OUTER JOIN Transactions ON Visits.visit_id = Transactions.visit_id 5 WHERE 6 amount IS NULL 7 GROUP BY customer_id;
5-3.1148.文章浏览I
1 # Write your MySQL query statement below 2 SELECT DISTINCT 3 author_id id 4 FROM 5 Views 6 WHERE 7 author_id = viewer_id 8 ORDER BY author_id;
6-1.197.上升的温度
1.datediff(日期1, 日期2):
得到的结果是日期1与日期2相差的天数
如果日期1比日期2大,结果为正;如果日期1比日期2小,结果为负;
2.timestampdiff(时间类型, 日期1, 日期2):
这个函数和上面diffdate的正、负号规则刚好相反。
日期1大于日期2,结果为负,日期1小于日期2,结果为正。
在“时间类型”的参数位置,通过添加“day”, “hour”, “second”等关键词,来规定计算天数差、小时数差、还是分钟数差
i.
1 # Write your MySQL query statement below 2 SELECT w1.id Id 3 FROM 4 Weather w1,Weather w2 5 WHERE 6 w1.Temperature > w2.Temperature AND DATEDIFF(w1.recordDate,w2.recordDate) = 1;
ii.
1 # Write your MySQL query statement below 2 SELECT w1.id Id 3 FROM 4 Weather w1 /*ACROSS*/ JOIN Weather w2 ON w1.Temperature > w2.Temperature AND DATEDIFF(w1.recordDate,w2.recordDate) = 1;
6-2.607.销售员
题目没说公司RED的代号一定是1,所以where后面条件为
Company.name = 'RED' AND Orders.com_id = Company.com_id 而不是
Company.com_id = 1 AND Orders.com_id = Company.com_id
i.
1 # Write your MySQL query statement below 2 SELECT SalesPerson.name 3 FROM 4 SalesPerson 5 WHERE 6 SalesPerson.sales_id NOT IN (SELECT Orders.sales_id FROM Company,Orders WHERE Company.name = 'RED' AND Orders.com_id = Company.com_id);
ii. "LEFT OUTER JOIN" 也可以写作 "LEFT JOIN"
1 SELECT s.name 2 FROM 3 salesperson s 4 WHERE 5 s.sales_id NOT IN (SELECT o.sales_id 6 FROM orders o LEFT JOIN company c ON o.com_id = c.com_id 7 WHERE c.name = 'RED');

浙公网安备 33010602011771号