【问题标题】:MYSQL Count unique values for each rowMYSQL 计算每行的唯一值
【发布时间】:2016-09-02 15:20:50
【问题描述】:

我有mysql数据库结构和值:

name  | x | y | z
------------------
name1 | 1 | 1 | 2
name2 | 2 | 1 | 3 
name3 | 1 | 1 | 1

现在我需要为每一行添加带有计数器唯一值 (x,y,z) 的额外列:

name  | x | y | z | unique
--------------------------
name1 | 1 | 1 | 2 | 2
name2 | 2 | 1 | 3 | 3
name3 | 1 | 1 | 1 | 1

我该怎么做?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可以使用 select count distinct

    SELECT *,COUNT (DISTINCT column-name)  FROM table-name;
    

    这里有更多答案>Counting DISTINCT over multiple columns,已经回答了。

    【讨论】:

    • 这个答案有帮助吗?
    【解决方案2】:

    如果您不需要大规模扩展,您可以这样做

    SELECT *, 
    (CASE 
     WHEN x=y=z THEN 1
     WHEN x=y OR x=z OR y=z THEN 2
     ELSE 3
    END) as `unique`
    FROM `table`
    

    【讨论】:

    • 不幸的是我有更多的列和几百万行。还有其他想法吗?
    • @kuguary 你是和 php 结合使用还是直接使用 sql 查询?
    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 2013-06-03
    • 2020-10-06
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多