【问题标题】:SQL. How to select unique records from multiple columnsSQL。如何从多列中选择唯一记录
【发布时间】:2015-02-25 14:48:48
【问题描述】:

我需要选择具有唯一记录的唯一列。现在,在枢轴之后,当我使用简单查询 SELECT * FROM table 时,我得到了这样的结果:

| Test1 | Test2 | Test3 | Test1 | Test2 | Test3 | Test1 | Test2 | Test3 | -- column names
|   1   |  1    |   1   |   2   |   2   |   2   |   3   |   3   |   3   | -- records

如果我使用查询:SELECT DISTINCT * FROM table 我得到以下结果:

| Test1 | Test2 | Test3 | -- different column names
|   1   |   1   |   1   | -- unique records

应该是这样的:

| Test1 | Test2 | Test3 | -- different column names
|   1   |   2   |   3   | -- different records

你有想法吗?

附:记录是动态的


更新:

我在旋转之前使用非常混乱的选择来为列提供不同的名称,也许你有建议如何以其他方式制作不同的名称?

SELECT DISTINCT TOP 5 @colsConversion +=    'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'1')+ ',' + 
                                            'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'2')+ ',' + 
                                            'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'3')+ ',' + 
                                            'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'4')+ ',' + 
                                            'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'5')+ ', '  
                FROM   (SELECT DISTINCT TOP 5....

我只需要使用一次'CAST([' + Name+ '] AS ' + 'NVARCHAR(MAX)' + ') AS ' + QUOTENAME('Test'+'1')+ ',',但问题是我不知道如何为每一列设置不同的名称,在这种情况下,所有列都将是名称Test1

【问题讨论】:

  • mysql 还是 sqlserver?我建议您先取消数据透视,然后再次进行数据透视...但是您可以在第一次数据透视之前选择唯一记录吗?
  • 我不认为这是可以实现的。
  • 表格看起来如何(定义和示例数据)。唯一的列?您正在使用哪个 dbms - MySQL 或 MS SQL Server - 或两者兼而有之?
  • 感谢您的回答。我已经用我的选择更新了我的问题
  • 它的 SQL 服务器。编辑了我的标签,误加了,抱歉。

标签: sql sql-server select unique


【解决方案1】:

也许是这个?

select distinct id, name from [table]

select id, name from [table] group by id, name

这里 distinct 运算符用于删除重复的结果行。

Distinct 是一项非常昂贵的操作,因为在处理完查询之后,数据库服务器可能会执行排序操作以删除重复项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-11
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2014-01-21
    • 2023-01-18
    相关资源
    最近更新 更多