如何编写查询以在SQL Server表中以混乱的顺序查找重复的值组合

时间:2016-02-25 21:03:32

标签: sql sql-server-2012

我的表值如下:

ID    column1    
101    a    
101    b    
101    c        
102    aa    
102    bb    
102    cc    

如何编写SQL查询以显示结果如下所示

  function search() {

      var tmp = new Date().toISOString();
      //console.log('new Date() ' + tmp);

      db.createIndex({
          index: {
              fields: ['title']
          }
      }).then(function (result) {
          console.log('createIndex ' + result);

          findIt(); // Run Find
      }).catch(function (err) {
          console.log('createIndex ' + err);
      });
  } 

function findIt()
  {
      db.find({
          selector: { title: { $eq: 'ABC2' } },
          sort: ['title']
          //,      use_index: 'indexFoo'
      }).then(function (result) {      
          //console.log('find - result ' + result);
          console.log(JSON.stringify(result));

         // console.log('JSON' + JSON.stringify(result, undefined, 2));

          console.log('Title: ' + result.docs[0].title);

      }).catch(function (err) {
          console.log('find - err ' + err);
      });
  }

2 个答案:

答案 0 :(得分:0)

如果按column1分组,则会消除任何重复项。但是要显示ID,你需要某种聚合函数,如MIN或MAX来显示,否则你会收到错误。

SELECT MIN(ID) as ID, column1
GROUP BY column1
ORDER BY column1

应该导致

ID  column1
101 a
101 b
101 c
102 aa
102 bb      
102 cc

答案 1 :(得分:0)

有多种方法可以做到这一点,但由于问题有点含糊不清,很难确定这方面的确切要求,但这里有几个选项:

按最小的ID排序,然后按列1按字母顺序排列

SELECT MIN(ID) as ID, column1 
GROUP BY column1
ORDER BY MIN (ID), column1

按列长1排序,然后按字母顺序排列<1>

SELECT MIN(ID) as ID, column1 
GROUP BY column1
ORDER BY LEN (column1), column1