mysql - 如何在 SQL 表中查找唯一值并创建统一 View

标签 mysql sql

我有一个 SQL 表,如果我简化的话,它看起来与此类似

<表类=“s-表”> <标题> login_code_id login_ Purpose_type <正文> 一个 维护 一个 评论 C 评论 C 终止 一个 评论 B 扫描

我有一个相当大的 SQL 表形式的数据集。现在的问题是我应该做什么来按login_code_id对其进行分组,在其中我可以看到针对唯一的login_code_id的不同类型的login_ Purpose_type以及每个login_code_id每个login_ Purpose_type出现的次数。最后将结果存储在一个新表中,这让我完全困惑。我应该如何处理这个问题?如果我问的问题很简单,请原谅我的无知。我对此很陌生。我正在使用 phpmyadmin 创建表

最佳答案

您可以根据查询结果使用 CREATE TABLE。 (参见http://dev.mysql.com/doc/refman/5.5/en/create-table.html)

CREATE TABLE summary 
SELECT login_code_id, login_purpose_type, COUNT(login_purpose_type) AS cnt 
FROM <old_table_name> 
GROUP BY login_code_id, login_purpose_type;

将为您提供一个具有以下结构的表格:

 login_code_id | login_purpose_type | cnt

 ======================================= 
 A             |  maintenance       |  5
 ----------------------------------------
 A             |  review            |  3
 ----------------------------------------
 B             |  review            |  2      

在此表中,每一行显示给定的 login_ Purpose_type 对于给定的 login_code_id 出现的频率。

如果你真的想要一个login_code_id和一个(login_ Purpose_type, cnt)列表作为一列,你可以一次性获取它(但对于大数据集来说可能会很慢:

CREATE TABLE summary_2 
SELECT login_code_id, group_concat(cnt) AS info 
FROM ( SELECT login_code_id,
concat("(", login_purpose_type,",", count(login_code_id),")") AS cnt 
FROM <old_table_name> 
GROUP BY login_code_id, login_purpose_type) s 
GROUP BY login_code_id ;

这会给你一个像这样的表格:

+-----------------+---------------------------+
| login_code_id   | info                      |
+-----------------+---------------------------+
| A               | (maintenance,3),(review,2)|
| B               | (scan,2),(review,3)       |
| C               | (terminate,1)             |
+---------------------------------------------+

或者您可以使用第一个表作为中间表,并根据前一个汇总表创建summary_2:

CREATE TABLE summary_2 
SELECT login_code_id, group_concat(cnt) AS info FROM ( 
SELECT login_code_id, concat("(", login_purpose_type,",", cnt,")") AS cnt 
FROM summary ) s 
GROUP BY login_code_id ;

关于mysql - 如何在 SQL 表中查找唯一值并创建统一 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340659/

相关文章:

mysql - 数组上具有单独元素的 Ruby 方法

mysql - 为什么我不能在 jpa 中定义一个名为 "index"的列?

c# - Entity Framework - 唯一索引上的 UPSERT

mysql - 使用 LEFT OUTER JOIN 检查相关行不存在的最佳方法是什么

mysql - 相当于此mysql查询 "delete from item_img where datediff(now(), date) > 5"的Elastic搜索deletebyquery

MySQL group by 具有多个选择规则的多列的排序和优先级

mysql - 使用 Smartfox API 连接到 Windows Azure 数据库

sql - 查询 Excel 2010 时诊断 OLEDB 异常

mysql - 如何使用两个连接运行递归查询?

php - 如何在不让它死掉的情况下捕获数据库错误?