我的要求是获得每个客户的最新订单,然后获得前100名记录.
我写了一个如下查询来获取每个客户的最新订单.内部查询工作正常.但我不知道如何根据结果获得前100名.
SELECT * FROM (
SELECT id, client_id, ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn
FROM order
) WHERE rn=1
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
我正在尝试通过hibernate实现订单管理系统,我不是很熟悉.异常要求我在我的程序尝试中手动执行sql和hibernate一样,并且成功了.我不知道是什么问题.可能是设计问题.数据库是这样的:
ORDER有一个指向ITEM表中ITEM_ID的外键ITEM_ID,它是一对多关系,另一个外键CLIENT_ID指向CLINET表中的CLIENT_ID.带注释的三个实体定义写成
@Table(name = "ITEM")
public class Item implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ITEM_ID", unique = true, nullable = false)
private int item_id;
@Column(name = "NAME")
private String name;
@Column(name="CATEGORY")
private String category;
@Column(name="UNIT")
private String unit;
@Column(name="PRICE")
private double price;
//getters and setters
}
@Entity
@Table(name="CLIENT")
public class Client implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CLIENT_ID", unique = true, nullable = false)
private int client_id;
@Column(name="CLIENT_NAME")
private String client_name;
//getters and setters
}
@Entity
@Table(name="ORDER")
public …Run Code Online (Sandbox Code Playgroud)