您的位置:首页 > 数据库 > MySQL

MySQL--操作简记(联结表,组合查询(UNION))

2017-08-17 17:39 543 查看

联结表

1.创建联结

SELECT vend_name,prod_name,prod_price
FROM vendors, products
WHERE vendors.vend_id = products.vend_id


上面的语句与之前最大的区别在于,指定的列位于两张表内,使用where进行联结。

返回表vendors与表products中vend_id相等的vend_name,prod_name,prod_price

基于两个表之间的相等测试,这种联结称为等值联结,或内部联结。对于这种联结,还可以使用下面这种语法:

INNER JOIN

ON

SELECT vend_name,prod_name,prod_price
FROM vendors INNER JOIN products
ON vendors.vend_id = products.vend_id


2.联结多个表

SELECT vend_name,prod_name,prod_price, quantity
FROM vendors, products, order
WHERE vendors.vend_id = products.vend_id
AND order.prod_id = products.vend_id
AND order_num = 20005;


FROM后跟多个表,WHERE子句条件用AND连接。

3.联结的其他类型

自联结:在select语句中不止一次引用相同的表

自然联结:至少有一个列出现在不止一个表中

外部联结:联结包含了在相关表中没有关联行的行

组合查询

执行多个查询(多条SELECT语句),并将结果作为但个查询结果集返回。

1.创建组合查询

UNION

例如,我想查询价格小于10 或供应商名字为a的id号,即下面的两段语句怎么同时实现

SELECT order_id, order_price, order_name
FROM order1
WHERE order_price < 10;


SELECT order_id, order_price, order_name
FROM order1
WHERE order_name = 'a';


使用union组合:

SELECT order_id, order_price, order_name
FROM order1
WHERE order_price < 10
UNION
SELECT order_id, order_price, order_name FROM order1 WHERE order_name = 'a';




2.UNION规则

必须由两条或两条以上的select语句组成,每两条之间用一个UNION分隔

UNION中的每个查询必须包含相同的列,表达式或聚集函数

列数据类型必须兼容,类型不必完全相同,但必须是可以隐含转换的类型

使用UNION满足了条件后,可能会有条件满足重复的,就会有重复,使用UNION ALL可以自动除去重复的行

3.对组合查询结果排序

在使用UNION组合查询时,只能使用一条ORDER BY子句,必须出现在最后一条SELECT语句之后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库 联结表