Code with mosh 学习笔记 2

本文详细讲解了如何在SQL中使用LIMIT选择前三位忠实客户,INNERJOIN连接orders和customers,以及多个表的连接方法,包括selfjoin和跨数据库连接。涉及实际案例,如订单、客户、产品和支付数据的关联查询。

The limit clause

选取customers表中,最忠实客户的前三位(points分最高的前三位)

SELECT *
FROM customers
ORDER BY points DESC
LIMIT 3

Inner join

把两张表中,相同的,如下中,orders表中的customer_id 和 customers表中的customer_id连接,

使用JOIN  ON   ,  FROM orders  join  customers,  意思是连接orders表和 customers表。 ON 后面接 表中相同列, 表.列 为标准格式


SELECT order_id, orders.customer_id, first_name, last_name
FROM orders
JOIN customers
       ON orders.customer_id = customers.customer_id



也可以简化表名,通过 orders o, 将orders 简化为o

SELECT order_id, o.customer_id, first_name, last_name
FROM orders o
JOIN customers c
       ON o.customer_id = c.customer_id

练习

将order_items 和 products两个表连接,输出order_id, product_id ,quantity, unit_price   (看表可知,两者均有unit_price和 product_id)

SELECT order_id, o.product_id,quantity, o.unit_price
FROM products p
JOIN order_items o
     ON P.product_id = o.product_id

通过product_id将两表连接

joining across database

JOIN 后面的sql_inventory是另一个database , 要和sql_store连接

USE sql_store;
SELECT *
FROM order_items oi
JOIN sql_inventory.products p
	 ON  oi.product_id = p.product_id

self join

SELECT *
FROM employees e
JOIN employees m
      ON  e.reports_to= m.employee_id

e.reports_to= m.employee_id ,
最后的表中后面的employee_id 会先形成一个表,这个表的右边是将reports_to 最为employee_id 的表 


Joining Multiple Tables

SELECT o.order_id, o.order_date, c.first_name, c.last_name, os.name AS status
FROM orders o 
JOIN customers c
      ON o.customer_id = c.customer_id
JOIN order_statuses os 
	ON o.status = os.order_status_id

完成下面这幅图,连接4个表

SELECT payment_id, c.client_id, i.invoice_id, p.date, p.amount, p.payment_method
FROM clients c
JOIN invoices i 
     ON c.client_id = i.client_id
JOIN payments p 
	 ON i.invoice_id = p.invoice_id
JOIN payment_methods pm
	 ON pm.payment_method_id = p.payment_method

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值