如何选择具有超过值的外键的记录?

时间:2016-06-23 09:04:48

标签: sql select plsql oracle11g oracle-sqldeveloper

我是PlSQL的新手。我有这个表,表示2个表之间的关系:

ID T1Id T2Id
-- ---- ----
 1    1    1
 2    2    1
 3    2    2
 4    2    3
 5    3    1
...

我在第二列(T1Id)中有值,它可能有一个或多个来自第三列(T2Id)的值。 我的问题是如何只选择T1Id值超过1的T1Id值。

你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果您只想要表中有多个T1Id值,可以使用下面的内容。

select T1Id, count(T1Id) as countT1 from yourTable
group by T1Id
having count(T1Id) > 1

如果您想选择其他列,可以使用行分区来实现此目的

SELECT *
  FROM (SELECT a.*, COUNT (*) OVER (PARTITION BY t1id) AS countT1
          FROM yourTable a)
 WHERE countT1 > 1