SQL过滤器以保留重复项

时间:2016-01-19 04:58:21

标签: sql sql-server

你好我想知道这个例子是否可以由SQL完成。如果不能,请告诉我。

查询结果:

Id  | Qty |
A   |  1  |
B   |  3  |
B   |  5  |
C   |  2  |
C   |  1  |
C   |  4  |

因为Id B和C在查询结果中有多个行,所以我会保留它们并从结果中删除Id A.结果就是:

Id  | Qty |
B   |  3  |
B   |  5  |
C   |  2  |
C   |  1  |
C   |  4  |

我不知道如何找到这个并告诉我SQL是否无法完成。 提前致谢

2 个答案:

答案 0 :(得分:3)

如果您正在使用SQL Server,一种方法是使用COUNT OVER

WITH CTE AS(
    SELECT *, 
        cnt = COUNT(Id) OVER(PARTITION BY Id)
    FROM tbl
)
SELECT
    Id, Qty
FROM CTE
WHERE cnt > 1

COUNTHAVING用于标准SQL

SELECT *
FROM tbl
WHERE 
    Id IN(
        SELECT Id
        FROM tbl
        GROUP BY Id
        HAVING COUNT(*) > 1
    )

答案 1 :(得分:0)

尝试此查询

$(function() {
  $('img').on('click', function() {
    var alpha = $(this).css('opacity');
    $("#msg").text((alpha == 1) ? "full" : alpha);
  }).on('transitionend', function() {
    var alpha = $(this).css('opacity');
    if (alpha == 1) {
      $("#msg2").fadeIn().delay(700).fadeOut();
    } else {
      $("#msg3").fadeIn().delay(700).fadeOut();
    }
  });
});