Java 在条件中选择“按订单查询”

Java 在条件中选择“按订单查询”,java,hibernate,criteria,Java,Hibernate,Criteria,我想从此SQL查询创建一个条件查询: SELECT * FROM `Product` p ORDER BY (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) DESC 我找不到使用子查询的方法…尝试隐式联接: select * from ( select p.*, (select count(*) from sale s where s.product_id = p.id) as cn

我想从此SQL查询创建一个条件查询:

SELECT * FROM `Product` p
ORDER BY (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) DESC
我找不到使用子查询的方法…

尝试隐式联接:

select *
from (
    select 
         p.*, 
         (select count(*) from sale s where s.product_id = p.id) as cnt 
    from product p
)a 
order by cnt desc

Order By
仅适用于
select
部分中的列

因此,基本上类似这样的方法会起作用:

SELECT Group, COUNT(*) as total
FROM table
GROUP BY Group
ORDER BY total DESC
因此,对于您的情况,您可以执行以下操作:

SELECT *, (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) as total FROM `Product` p
ORDER BY total DESC

注意:这完全未经测试。

谢谢,您知道如何使用此SQL查询创建条件查询吗?请查看这些文档是否有帮助: