在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、什么是子查询?列出订购物品TNT2的所有客户: select cust_id from orders where order_num IN (SELECT order_num from orderitems where prod_id = 'TNT2' ) 格式化 对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。 注:
除了子查询可以放在 假如需要显示 select cust_name, cust_state, (SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) as orders from customers ORDER BY cust_name
下面介绍一下联结: SELECT vend_name,prod_name,prod_price FROM vendors,products WHERE vendors.vend_id=products.vend_id ORDER BY vend_name, prod_name 注:
这里使用where 语句进行联接的作用:
注:
下面的SELECT语句返回与前面例子完全相同的数据: SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products on vendors.vend_id = products.vend_id ORDER BY vend_name, prod_name 使用哪种语法 性能考虑 多做实验 正如所见,为执行任一给定的SQL操作,一般存在不止一种方法。很少有绝对正确或绝对错误的方法。性能可能 如: 下面介绍一下几种特殊的连接。 2、自联接假如你发现某物品(其 下面是解决此问题的一种方法: 你可能使用子查询,这样做: select prod_id,prod_name from products where vend_id = (SELECT vend_id from products WHERE prod_id ='DTNTR') 同样可以使用自联接。 select t1.prod_id,t2.prod_name from products t1, products t2 where t1.vend_id = t2.vend_id and t1.prod_id='DTNTR' 用自联结而不用子查询 自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是 3、自然联接无论何时对表进行联结,应该至少有一个列出现在不止一个表中(被联结的列)。标准的联结(前一章中介绍的内部联结)返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,使每个列只返回一次。 怎样完成这项工作呢?答案是,系统不完成这项工作,由你自己完成它。自然联结是这样一种联结,其中你只能选择那些唯一的列。这一般是通过对表使用通配符( 4、外部联结许多联结将一个表中的行与另一个表中的行相关联。但有时候会需要包含没有关联行的那些行。例如,可能需要使用联结来完成以下工作: 比如:对每个客户下了多少订单进行计数,包括那些至今尚未下订单的客户; SELECT customers.cust_id,order_num from customers LEFT OUTER JOIN orders on customers.cust_id = orders.cust_id 这条 使用带聚集函数的联结: 要检索所有客户及每个客户所下的订单数: SELECT customers.cust_id, COUNT(order_num) as num from customers LEFT OUTER JOIN orders on customers.cust_id = orders.cust_id GROUP BY cust_id
到此这篇关于mysql 子查询与连接表详情的文章就介绍到这了,更多相关mysql 子查询与连接表内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论