【发布时间】:2012-04-21 19:36:23
【问题描述】:
以下是 SQL 查询的示例 o/p -
BUG_ID | LINKED_BUG_ID
-----------|-----------------
3726 | 45236
45236 | 3726
3726 | 45254
45254 | 3726
3726 | 45402
45402 | 3726
3726 | 1182
1182 | 55745
在我的 SQL o/p 中,有两行,其中一行是多余的。例如 Bug Id 3726 和 Linked Bug Id 45326 和 Bug Id 45326 和 Linked Bug Id 3726 在 o/p 中出现两次,我们只需要其中一行并忽略这种 duplicate rows(在 Bug Id 列或 Linked Bug Id 列中重复一个值),而不影响包含不同值的 o/p。
目前我可以使用以下查询识别此类重复行,但我只需要从此类重复行中找出一行。
SELECT
BUG_ID,
LINKED_BUG_ID,
CASE
WHEN BUG_ID IN (select LINKED_BUG_ID FROM MY_BUG_LINKS) AND
LINKED_ISSUE_ID IN (SELECT BUG_ID FROM MY_BUG_LINKS)
THEN 'true' ELSE 'false'
END AS EQUAL
FROM MY_BUG_LINKS;
以下是我在代码中用于获取所有行(甚至包括重复行)的 SQL 查询
SELECT BUG_ID, LINKED_BUG_ID FROM MY_BUG_LINKS;
如何避免在数据库级别本身或我的 java 代码中获取冗余的重复行?
【问题讨论】:
-
如果该行是多余的,为什么不从数据库中删除它呢?为什么它首先存在?
-
它是否仅适用于单向的前向和后向链接
{(A, B), (B, A)},或者您是否希望消除链中连接的重复项,如{(A, B), (B, C), (C, D), (D, A)}?
标签: java sql database oracle11g duplicate-removal