我看了很多类似的文章,但仍然找不到类似的案例,或者我太初学者也无法理解问题中的命令。
我写的但返回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);
当我运行单个选择命令时,它们运行正常并返回预期结果。
两个查询都完全相同,因此您可以合并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列名,因此该查询是明确且易于理解的
] >>