首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何选择特定列中具有不同值的所有属性(*)?

如何选择特定列中具有不同值的所有属性(*)?
EN

Stack Overflow用户
提问于 2015-04-13 18:14:39
回答 3查看 9.2K关注 0票数 2

以下是针对学习者的w3school数据库的链接:

W3School Database

如果我们执行以下查询:

SELECT DISTINCT city FROM Customers

它返回表中不同城市属性的列表。

如果我们想要得到像从SELECT * FROM Customers查询中得到的所有行,并且每行中的城市属性值都是唯一的,该怎么办呢?

EN

回答 3

Stack Overflow用户

发布于 2015-04-13 18:19:33

当与多个列一起使用时,DISTINCT将一起应用于所有列。因此,考虑所有列的值集,而不仅仅是一列。

如果您想要有不同的值,那么连接所有的列,这将使它不同。

或者,您可以使用GROUP BY对行进行分组。

票数 0
EN

Stack Overflow用户

发布于 2015-04-13 18:31:53

我认为你想要这样的东西:

(将PK字段更改为您的Customers表主键或索引,如Id)

在SQL Server (和标准SQL)中

代码语言:javascript
运行
复制
SELECT 
    *
FROM (
    SELECT 
        *, ROW_NUMBER() OVER (PARTITION BY City ORDER BY PK) rn
    FROM
        Customers ) Dt
WHERE
    (rn = 1)

在MySQL中

代码语言:javascript
运行
复制
SELECT 
    * 
FORM (
    SELECT 
        a.City, a.PK, count(*) as rn 
    FROM 
        Customers a
        JOIN 
        Customers b ON a.City = b.City AND a.PK >= b.PK
    GROUP BY a.City, a.PK ) As DT
WHERE (rn = 1)

此查询-I希望-将返回您的城市,并显示其他列。

票数 0
EN

Stack Overflow用户

发布于 2016-01-06 23:07:16

您需要选择customers表中的所有值,其中city是唯一的。因此,从逻辑上讲,我提出了这样的问题:

代码语言:javascript
运行
复制
SELECT * FROM `customers` WHERE `city` in (SELECT DISTINCT `city` FROM `customers`)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29602877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档