【问题标题】:How to get values grouped by name? [closed]如何获取按名称分组的值? [关闭]
【发布时间】:2013-07-25 09:34:19
【问题描述】:

我有一张桌子

id name  no
1  alex  12
2  alex  13
3  kale  14
4  kale  15

如何获取按“名称”分组的“否”值, 应该返回以下

alex - 12,13
kale - 14,15

【问题讨论】:

  • 你的帖子的标签很混乱,你想要一个 SQL 语句还是如何在 Django 中执行?
  • 每个名字都正好有两行吗?
  • 可以用纯sql或者django写
  • Ashuthosh,不,可以更多

标签: sql sql-server django django-models


【解决方案1】:

如果你想避免编写 SQL,你可以在 Django 中做这样的事情:

In [1]: from my_app.models import MyModel

In [2]: result = {}

In [3]: for o in MyModel.objects.only('name', 'no'):
   ...:     result[o.name] = result.get(o.name, []) + [o.no]
   ...:     

In [4]: result
Out[4]: {u'alex': [12, 13], u'kale': [14, 15]}

【讨论】:

    【解决方案2】:

    您需要创建一个函数来返回列表,使用 COALESCE ... 像这样:

    create table x (id int,name varchar(10),no varchar(10))
    insert into x (id,name,no) values (1,'alex','12')
    insert into x (id,name,no) values (2,'alex','13')
    insert into x (id,name,no) values (3,'kale','14')
    insert into x (id,name,no) values (4,'kale','15')
    
    create function GetList (@name as varchar(10))
    returns varchar(100)
    as
    begin
      declare @List varchar(100) 
      select @List = COALESCE(@List + ', ', '') + no 
      from x 
      where name = @name
      return @List
    end
    
    select distinct name,dbo.GetList(name) from x
    

    【讨论】:

      【解决方案3】:

      对于 SQL Server:

      使用STUFF 函数来实现:

      SELECT distinct Name, No = 
          STUFF((SELECT ' , ' + CONVERT(VARCHAR(20),[no])
                 FROM Table1 b 
                 WHERE b.Name = a.Name
                FOR XML PATH('')), 1, 2, '')
      FROM Table1 a
      GROUP BY Name;
      

      输出:

      | NAME |       NO |
      -------------------
      | alex |  12 , 13 |
      | kale |  14 , 15 |
      

      this SQLFiddle

      【讨论】:

        【解决方案4】:

        您使用的是 MySQL/MariaDB 吗?如果是这样,您可以使用以下sn-p:

        SELECT name, GROUP_CONCAT(no SEPARATOR ', ') FROM your_table GROUP BY name;
        

        GROUP_CONCAT 中的no 是您要合并的列的名称。

        【讨论】:

        • OP 想要在 SQL Server 或 django 中。
        • 我在 DJango 框架中使用 django-orm
        • 对不起,我错过了标签!
        猜你喜欢
        • 1970-01-01
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-16
        相关资源
        最近更新 更多