相关疑难解决方法(0)

如何删除重复的行?

从相当大的SQL Server表中删除重复行的最佳方法是什么(即300,000多行)?

当然,由于RowID身份字段的存在,行不会是完美的重复.

MyTable的

RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server duplicates

1254
推荐指数
31
解决办法
118万
查看次数

我可以将多个MySQL行连接到一个字段中吗?

使用MySQL,我可以这样做:

SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
Run Code Online (Sandbox Code Playgroud)

我的输出:

shopping
fishing
coding
Run Code Online (Sandbox Code Playgroud)

但相反,我只想要1行,1 col:

预期产出:

shopping, fishing, coding
Run Code Online (Sandbox Code Playgroud)

原因是我从多个表中选择了多个值,并且在所有连接之后我有了比我想要的更多的行.

我在MySQL Doc上寻找了一个函数,它看起来不像CONCATCONCAT_WS函数接受结果集,所以这里的任何人都知道如何做到这一点吗?

mysql sql concat group-concat

1143
推荐指数
10
解决办法
63万
查看次数


如何创建SQL Server函数以将子查询中的多行"连接"到单个分隔字段?

为了说明,假设我有两个表如下:

VehicleID Name
1         Chuck
2         Larry

LocationID VehicleID City
1          1         New York
2          1         Seattle
3          1         Vancouver
4          2         Los Angeles
5          2         Houston
Run Code Online (Sandbox Code Playgroud)

我想写一个查询来返回以下结果:

VehicleID Name    Locations
1         Chuck   New York, Seattle, Vancouver
2         Larry   Los Angeles, Houston
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用服务器端游标完成,即:

DECLARE @VehicleID int
DECLARE @VehicleName varchar(100)
DECLARE @LocationCity varchar(100)
DECLARE @Locations varchar(4000)
DECLARE @Results TABLE
(
  VehicleID int
  Name varchar(100)
  Locations varchar(4000)
)

DECLARE VehiclesCursor CURSOR FOR
SELECT
  [VehicleID]
, [Name]
FROM [Vehicles]

OPEN VehiclesCursor

FETCH NEXT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server string-concatenation

193
推荐指数
8
解决办法
13万
查看次数

GROUP BY组合/连接一列

我有一张桌子如下:

ID  User  Activity  PageURL  
 1  Me    act1      ab     
 2  Me    act1      cd     
 3  You   act2      xy     
 4  You   act2      st
Run Code Online (Sandbox Code Playgroud)

我希望按用户和活动进行分组,这样我最终得到的结果如下:

User  Activity  PageURL  
Me    act1      ab, cd     
You   act2      xy, st
Run Code Online (Sandbox Code Playgroud)

如您所见,列PageURL由基于group by的逗号分隔在一起.

真的很感激任何指针和建议.

sql sql-server group-by sql-server-2008

93
推荐指数
2
解决办法
18万
查看次数

多行到一个以逗号分隔的值

我想在SQL Server中创建一个表值函数,我想以逗号分隔值返回数据.

例如表格: tbl

ID | Value
---+-------
 1 | 100
 1 | 200
 1 | 300     
 1 | 400 
Run Code Online (Sandbox Code Playgroud)

现在,当我使用该函数执行查询时 Func1(value)

SELECT Func1(Value) 
FROM tbl 
WHERE ID = 1
Run Code Online (Sandbox Code Playgroud)

我想要的输出是: 100,200,300,400

sql sql-server sql-server-group-concat

83
推荐指数
1
解决办法
29万
查看次数

T-SQL是否具有连接字符串的聚合函数?

可能重复:
SQL Server 2000中的内嵌类型函数?
连接行值T-SQL

我有一个我正在查询的视图,看起来像这样:

BuildingName    PollNumber
------------    ----------
Foo Centre      12        
Foo Centre      13
Foo Centre      14
Bar Hall        15
Bar Hall        16
Baz School      17
Run Code Online (Sandbox Code Playgroud)

我需要编写一个将BuildingNames组合在一起的查询,并显示一个PollNumbers列表,如下所示:

BuildingName    PollNumbers
------------    -----------
Foo Centre      12, 13, 14
Bar Hall        15, 16
Baz School      17
Run Code Online (Sandbox Code Playgroud)

我怎么能在T-SQL中做到这一点?我宁愿不为此写一个存储过程,因为它看起来有点矫枉过正,但我​​不是一个数据库人.看起来像SUM()或AVG()这样的聚合函数是我需要的,但我不知道T-SQL是否有一个.我正在使用SQL Server 2005.

t-sql sql-server group-by sql-server-2005 aggregate-functions

76
推荐指数
2
解决办法
8万
查看次数

使用逗号作为分隔符将多行转换为一行

如果我发出SELECT username FROM Users我得到这个结果:

username
--------
Paul
John
Mary

但我真正需要的是一个行与所有以逗号分隔值,如下所示:

Paul, John, Mary

我该怎么做呢?

t-sql csv rows

71
推荐指数
8
解决办法
28万
查看次数

我可以用逗号将多行划分为一列吗?

我试图在我的SQL Server数据库中合并这样的东西:

[TicketID], [Person]
 T0001       Alice
 T0001       Bob
 T0002       Catherine
 T0002       Doug
 T0003       Elaine

进入:

[TicketID], [People]
 T0001       Alice, Bob
 T0002       Catherine, Doug
 T0003       Elaine

我需要在SQL Server和Oracle中执行此操作.

我发现GROUP_CONCATMySQL 的功能完全符合我的需要,但MySQL不是一个选项.

编辑:测试台:

DECLARE @Tickets TABLE (
    [TicketID] char(5) NOT NULL,
    [Person] nvarchar(15) NOT NULL
)

INSERT INTO @Tickets VALUES
    ('T0001', 'Alice'),
    ('T0001', 'Bob'),
    ('T0002', 'Catherine'),
    ('T0002', 'Doug'),
    ('T0003', 'Elaine')

SELECT * FROM @Tickets
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

68
推荐指数
5
解决办法
9万
查看次数

将列值连接到逗号分隔列表中

什么是格式化输出的TSQL语法,以便列值显示为字符串,用逗号分隔.

例如,我的表CARS具有以下内容:

CarID    CarName  
----------------
    1    Porsche  
    2    Mercedes  
    3    Ferrari  
Run Code Online (Sandbox Code Playgroud)

我如何获得汽车名称: Porsche, Mercedes, Ferrari

t-sql sql-server

58
推荐指数
8
解决办法
12万
查看次数