我有这种记录的数据库:
Id | Value | DocId |
------ | ------ | ------|
1 | 10 | null |
2 | -10 | 1 | //this is child of record with id = 1
3 | 15 | null |
4 | -15 | 3 | //this is child of record with id = 3
5 | 7 | null |
6 | -7 | 5 | //this is child of record with id = 5
7 | 16 | null |
所以我想选择Id = 1
和Id = DocId
的记录,因此应该返回(因为这些记录包含Id = 1
和DocId = 1
)
Id | Value | DocId |
------ | ------ | ------|
1 | 10 | null |
2 | -10 | 1 |
我知道我可以使用where子句,但我需要使用Join。
答案 0 :(得分:0)
您可以从同一个表中选择两次,就像它们是两个单独的表一样:
从TheTable t1,TheTable t2中选择*,其中t1.id = t2.DocId;
答案 1 :(得分:0)
您正在显示where id = 1 or docid = 1
的结果。那么为什么必须使用连接呢?这似乎没有意义。无论如何,你走了:
select t.*
from t
join (select 1 as id) x on x.id in (t.id, t.docid);
答案 2 :(得分:0)
你说你想要id = 1或docId = 1的记录。所以在sql中你几乎可以说是:
select * from my_table where id = 1 or docId = 1;