如何使用group by返回具有多列= 1的count()的唯一行?

时间:2016-09-29 19:08:43

标签: sql sql-server-2008 count

所以这是我的情况:

Template.timeTrackerTemplate.onCreated(function () {
  this.trackerId = null;
});

Template.timeTrackerTemplate.helpers({
  showCounterState: function() {
    const trackerId = Template.instance().trackerId;
    return trackerId ? TimeTracker.findOne({ _id: trackerId }).state : ''; 
  }
});

Template.timeTrackerTemplate.events({
  'click .start-counting': function(e, instance) {
    instance.trackerId = TimeTracker.insert({ state: 0 });
     Meteor.call('updateCounterState', instance.trackerId);
  }
});

我正在尝试构建一个查询,该查询将返回给定____________________________________________ | idnumber | name | sectiongroup | -------------------------------------------- | 123 | Joe | one | | 123 | Barry | two | | 1234 | Laura | one | | 1234 | LauraCopyCat | one | -------------------------------------------- 中的任何唯一(即 - COUNT(idnumber) = 1)ID号。因此,如果您在第一组的第一组中,并且您的sectiongroup中没有其他人拥有与您相同的ID号,那么我想要您的号码。如果第二组中的某个人碰巧有相同的idnumer,那没关系,我仍然想要你的号码。

例如,Barry和Joe拥有相同的ID号,但它们位于不同的sectiongroups中,所以我想返回它们的idnubers。但是,Laura和LauraCopyCat有相同的分组,所以我不希望他们的idnumber被返回。到目前为止,我有以下内容:

sectiongroup

有没有办法将sectiongroup添加到COUNT()= 1条件?

1 个答案:

答案 0 :(得分:1)

只需使用COUNT(*)即可避免混淆。这将计算特定组中的记录数。请记住,一个组由GROUP BY语句中指定的字段中的唯一值组合组成。

SELECT idnumber
FROM namestable 
GROUP BY idnumber, sectiongroup
HAVING COUNT(*) = 1

请注意,如果您有共享ID但具有不同子组的记录,则会导致重复的idnumbers。要删除重复内容,只需将SELECT更改为SELECT DISTINCT即可。

在这里测试:http://sqlfiddle.com/#!9/b0a50c/3