用于选择具有公共数据的两个记录的SQL连接

时间:2017-05-29 13:05:49

标签: sql

我有这种记录的数据库:

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 = 1Id = DocId的记录,因此应该返回(因为这些记录包含Id = 1DocId = 1

Id     | Value  | DocId |
------ | ------ | ------|
1      | 10     |  null |
2      | -10    |  1    |

我知道我可以使用where子句,但我需要使用Join。

3 个答案:

答案 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;