IT序号网

带条件的SQL

hnrainll 2024年11月24日 编程语言 39 0

如果我有这样一条sql语句:

Select * from Order, OrderDetail  
where Order.ID = OrderDetail.OrderID and OrderDetail.Amount > 5 

Order union with OrderDetail 找到满足Amount>5 的行时,是否意味着在所有行中循环??

请帮帮我。

我的问题是:如果在连接 2 个表之后,在创建的所有行中执行数据库循环以查找满足条件的行。

请您参考如下方法:

该查询通过 Order.ID = OrderDetail.OrderID 连接两个表。它是否在 I/O 由数据库决定期间或之后过滤结果行。如果您在 Amount 上有一个索引,可以想象它会查找匹配的行,然后 加入。最好查看查询的 EXPLAIN

但是您的查询最好表达为:

select * 
from Order 
join OrderDetail on Order.ID = OrderDetail.OrderID 
where OrderDetail.Amount > 5 

这个语法很清楚什么是join条件,什么是行过滤条件。像这样格式化它也更容易阅读!

通常,表格都有别名,使其更易于阅读:

Select * 
from Order o 
join OrderDetail od on o.ID = od.OrderID 
where od.Amount > 5 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!