我有一张桌子
id name no
1 alex 12
2 alex 13
3 kale 14
4 kale 15
如何获取按“名称”分组的“否”值,应返回以下内容
alex - 12,13
kale - 14,15
我有一张桌子
id name no
1 alex 12
2 alex 13
3 kale 14
4 kale 15
如何获取按“名称”分组的“否”值,应返回以下内容
alex - 12,13
kale - 14,15
对于 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 |
如果你想避免编写 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]}
你需要创建一个函数来返回列表,使用 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
你在使用 MySQL/MariaDB 吗?如果是这样,您可以使用以下代码段:
SELECT name, GROUP_CONCAT(no SEPARATOR ', ') FROM your_table GROUP BY name;
其中no
inGROUP_CONCAT
是您要合并的列的名称。