两个子查询分别可以正常工作,但是在加入时“ SQL命令未正确结束”,除了[像我五岁一样解释]

问题描述 投票:0回答:1

我看了很多类似的文章,但仍然找不到类似的案例,或者我太初学者也无法理解问题中的命令。

我写的但返回ORA-00933: SQL command not properly ended的命令:

(select product.productid, productname, productprice 
from product, soldvia 
where product.productid = soldvia.productid 
group by product.productid, product.productname, product.productprice 
having sum(soldvia.noofitems) > 3 )

except 

(select product.productid, productname, productprice 
from product, soldvia 
where product.productid = soldvia.productid 
group by product.productid, product.productname, product.productprice 
having count(soldvia.tid) > 1);

当我运行单个选择命令时,它们运行正常并返回预期结果。

oracle sqlplus
1个回答
0
投票

两个查询都完全相同,因此您可以合并having子句:

select p.productid, p.productname, p.productprice 
from product p
inner join soldvia s on p.productid = s.productid 
group by p.productid, p.productname, p.productprice 
having sum(s.noofitems) > 3 and count(s.tid) <= 1

注意:

  • always使用标准的显式联接(使用on关键字),而不是老式的隐式联接(在from子句中使用逗号):在新代码

  • 表别名使查询更易于编写和阅读

  • 在多表查询中,请始终用它们所属的表来限定all列名,因此该查询是明确且易于理解的

    ] >>
© www.soinside.com 2019 - 2024. All rights reserved.