sql 一对多关系随机查一条
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 一对多关系随机查一条相关的知识,希望对你有一定的参考价值。
数据格式如下
A表对应B表有N条记录
A表 B表
A a1
A a2
B b2
C c1
C c2
怎样查询出A表中的记录并关联B表中的记录,要求B表中随机一条记录关联A表
详细的描述下需求,A表中对应的是打分员,B表是打分员对学生打分的记录,现在是要抽查打分员的打分情况,每个打分员只抽一个学生(随机).用SQL能实现吗?
或者
select NewID,A.*,B.* from (select A.*,B.* from A inner join B on A.ID =B.AID ) order by NewID
仅供参考。以ID做关联。 参考技术A select top 1 a.A,b.a1 from A as a,B as b where a.A=b.A order by newid()
希望能帮到你! 参考技术B select a.A,b a1 from A a,B b where a.A=b.A追问
这样连接查出来的数据就会出现
A--a1
A--a2
B--b2
C--c1
C--c2
,我要的结果是
A--a1 或A--a2
B--b2
C--c1或C--c2
A表只要求B表随机一条记录关联
select distinct a.A,b a1 from A a,B b where a.A=b.A 这样行不
使用 QueryDSL SQL 映射一对多关系
【中文标题】使用 QueryDSL SQL 映射一对多关系【英文标题】:Mapping one-to-many relationship using QueryDSL SQL 【发布时间】:2013-04-25 13:39:54 【问题描述】:假设我有这两个 bean 实体:
public class Audit
private String code;
private java.sql.Timestamp creationDate;
private String creatorId;
private java.sql.Timestamp deletionDate;
private String description;
private String id;
private String name;
private String notes;
private Short status;
private List<AuditParticipant> participants;
和:
public class AuditParticipant
private String auditId;
private String department;
private String id;
private String name;
private String notes;
private String role;
private String surname;
...Audit
可以有 1..n Participants
,如何使用 QueryDSL SQL 将参与者列表投影到 Audit bean(获取属于审计的所有参与者)?
bean 是使用 QueryDSL 代码生成生成的。
谢谢
【问题讨论】:
【参考方案1】:Querydsl 为此类情况提供结果聚合功能http://www.querydsl.com/static/querydsl/3.1.1/reference/html/ch03s02.html#d0e1634
在这种情况下,它会是这样的
query.from(audit)
.innerJoin(participant).on(...)
.transform(groupBy(audit.id).as(audit, list(participant)));
查看这些示例以了解其他 groupBy 选项https://github.com/mysema/querydsl/blob/master/querydsl-collections/src/test/java/com/mysema/query/collections/GroupByTest.java
【讨论】:
以上是关于sql 一对多关系随机查一条的主要内容,如果未能解决你的问题,请参考以下文章