其他分享
首页 > 其他分享> > 联结+组合查询

联结+组合查询

作者:互联网

1、分组过滤:

GROUP BY 子句必须出现在WHERE 子句之后,ORDER BY 子句之前。

WHERE过滤行,而 HAVING过滤分组。

列出具有两个以上产品且其价格大于等 于 4 的供应商:

SELECT vend_id, COUNT(*) AS num_prods
FROM Products
WHERE prod_price >= 4
GROUP BY vend_id
HAVING COUNT(*) >= 2;

2、联结表:

联结多表

SELECT procLname, vencLname, procLprice, quantity
FROM Orderltems, Products, Vendors
WHERE Products.vencLId = Vendors.vencLId
AND Orderltems.prod_id = Products.prod_id
AND order_num = 20007;

内联结

基于两个表之间的相等测试

SELECT vencLname, procLname, procLprice
FROM Vendors
INNER JOIN Products ON Vendors.vencLId = Products.vend_id;

自联结

不止一次引用相同的表

要给与Jim Jones同一公司的所有顾客发送一封信件。

SELECT cl.cust_id ,cl.cust_name, cl.cust_contact
FROM Customers AS cl, Customers AS c2
WHERE cl.cust_name = c2.cust_name
AND c2.cust_contact = 'Jim Jones';

外联结

许多联结将一个表中的行与另一个表中的行相关联,但有时候需要包含没有关联行的那些行。

它检索所有顾客及其订单(包括没有订单顾客在内的所有顾客):

SELECT Customers.cust_id, Orders.order_num
FROM Customers
LEFT OUTER JOIN Orders ON Customers.cust_id = Orders.cust_id;

在 使 用 OUTER JOIN 语法时,必须使用RIGHT 或 LEFT 关键字指定包括其所有行的表( RIGHT指出的是OUTER JOIN 右边的表,而 LEFT指出的是OUTER JOIN 左边的表)。

 

3.组合查询

不去重:union all

将两组查询合并在一块

select
    device_id, gender, age, gpa
from user_profile
where university='山东大学'
 
union all
 
select
    device_id, gender, age, gpa
from user_profile
where gender='male'

 

 

标签:cust,组合,cl,联结,查询,Products,WHERE,id,SELECT
来源: https://www.cnblogs.com/gk520/p/16484605.html