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

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

341

被折叠的 条评论
为什么被折叠?



