首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个join或非-querying 2表

两个join或非-querying 2表
EN

Stack Overflow用户
提问于 2013-11-21 01:20:40
回答 2查看 39关注 0票数 0

我有两张桌子

脯线

Prodline_nbr

Prodline_name

prodline_color_code

prodline_discount

prod_nbr

prod_name

prod_price

prod_cost

我想列出每种产品的名称,销售价格,产品线名称,以及价格不超过200美元的产品的颜色代码,并按销售价格对它们进行排序。

这是我的密码

代码语言:javascript
复制
select PRODLINE_NAME,PRODLINE_COLOR_CODE,PROD_NAME, PROD_PRICE
from prodline, product
where PRODLINE_NBR in (select PRODLINE_NBR from prodline) 
and prod_price<=200 
order by PROD_PRICE desc;

这不对吗?有人告诉我有更好的方法可以加入吗?

第二次尝试

代码语言:javascript
复制
select PRODLINE_NAME,PRODLINE_COLOR_CODE,PROD_NAME, PROD_PRICE
from prodline, product
where PRODLINE_NBR = PROD_NBR
and prod_price<=200 
order by PROD_PRICE desc;

有谁能评论一下吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-11-21 10:25:15

第二个是正确的。第一个是错误的,因为它只是乘以两个表,我想这不足以达到你的目标。比较两个脚本,唯一的区别是where子句中的一个条件:

第一种方法使用PRODLINE_NBR in (select PRODLINE_NBR from prodline),这没有什么意义,因为PRODLINE_NBR是一个prodline字段,当然每个PRODLINE_NBR都应该在其中。不管有没有这种情况都没什么不同。

第二种方法使用PRODLINE_NBR = PROD_NBR,这是一种将两个表从乘法中连接起来的典型方法。如果您想通过两个字段之间的等式连接o两个表,则需要它。

票数 0
EN

Stack Overflow用户

发布于 2013-11-21 10:43:03

第二种风格是最好的!有许多方法可以产生相同的产出。但效率很重要。

这个链接是很好的学习如何连接和索引工作。

  • http://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html
  • selectivity
  • p5.php
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20110641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档