我有两张桌子T1和T2。
我必须从表T1中获取记录,其中anotherColumn在T2中为空或在T2中不存在。
表T1与T2的实体关系
let mapping = ["UGC":"Cysteine", "UGG" : "Tryptophan"]
let text = "UGCUGGAAUUUAGCAGCCCAU"
let characters = text.characters
var index = 0
while index < characters.count {
let start = text.index(text.startIndex, offsetBy: index)
var endOffset = index+3
if index+3 > characters.count {
endOffset = characters.count
}
let end = text.index(text.startIndex, offsetBy: endOffset)
let range = start..<end
let groupedSubstring = text[range]
print(mapping[groupedSubstring] ?? groupedSubstring)
index = index + 3
}
表T2与T1的实体关系
@OneToMany(mappedBy="t2")
private List<T2> t2s;
在上面的场景中,它应该返回表T1中的第2和第3条记录。
@ManyToOne
@JoinColumn(name="pId")
private T1 t1;
由于我使用内部子查询,因此需要更多时间。
@Query("select t1 from T1 t1 where NOT EXISTS (select t2 from T2 t2 where t1.id = t2.pId) OR EXISTS (select t2 from T2 t2 where t1.id = t2.pId OR t2.anotherColumn=null)")
public List<T2> findDisconnected();
答案 0 :(得分:1)
这就是你要找的东西
select * from T1 t1 full join T2 t2 on t1.id = t2.pId where t2.anotherColumn is NULL
这里你完全连接两个表并获取在另一列中具有空值的所有记录。