【问题标题】:create an additional column with select union in Mysql在 Mysql 中使用 select union 创建一个附加列
【发布时间】:2016-11-27 08:30:47
【问题描述】:

我有 2 个表:table1table2,两个表的结构都为 ; id - day - uniques - pageviews。我想创建一个包含uniques 格式的附加字段,例如2387|1283,同时总结给定日期的uniquespageviews。我有:

SELECT id, 
       day, 
       Sum(uniques)   AS uniques, 
       Sum(pageviews) AS pageviews 
FROM   (SELECT * 
        FROM   table1 
        WHERE ` day ` >= '2016-07-21' 
              AND ` day ` <= '2016-07-22' 
        UNION 
        SELECT * 
        FROM   table2 
        WHERE ` day ` >= '2016-07-21' 
              AND ` day ` <= '2016-07-22') t1 
GROUP  BY ` day ` 
ORDER  BY ` day ` ASC 

但是,这仅将 2 个表格中给定天数的 uniquespageviews 相加,但我还需要知道确切的值。假设我们在 table1 中有 5 个,在 table2 中有 3 个。此查询返回一个值为 8 的“唯一”字段。我还需要分别获取值 5 和 3

任何帮助都会节省大量宝贵的时间;)

谢谢

【问题讨论】:

  • 您的查询是正确的,您所描述的响应是正确的。目前还不清楚您需要什么。
  • 我写的查询总结了 2 个表中的“唯一”字段,但我还需要知道确切的值。假设我们在表 1 中有 5 个,在表 2 中有 3 个。此查询返回一个值为 8 的“唯一”字段。我还需要分别获取值 5 和 3
  • 您的查询要求一个总和。也许你可以做一个 group_concat (dev.mysql.com/doc/refman/5.7/en/…) 这样列返回由分隔符分隔的各个值。

标签: mysql sql select group-by group-concat


【解决方案1】:

您的查询要求一个总和。也许您可以执行 GROUP_CONCAT (MySQL reference),以便该列返回由分隔符分隔的各个值。示例如下:

SELECT id, 
   day, 
   SUM(uniques)            AS uniques, 
   GROUP_CONCAT(CONCAT(uniques, ':', `tablename`) SEPARATOR '|')   AS uniques_values, 
   SUM(pageviews)          AS pageviews, 
   GROUP_CONCAT(CONCAT(pageviews, ':', `tablename`) SEPARATOR '|') AS pageviews_values 
FROM   (SELECT * , 'table1' as `tablename`
        FROM   table1 
        WHERE  day >= '2016-07-21' 
               AND day <= '2016-07-22' 
        UNION 
        SELECT * , 'table2' as `tablename`
        FROM   table2 
        WHERE  day >= '2016-07-21' 
               AND day <= '2016-07-22') t1 
GROUP  BY day 
ORDER  BY day ASC 

希望有帮助:)

【讨论】:

  • 这有很大帮助,但现在我不知道哪个唯一值来自哪个表,顺序是随机的。有办法知道吗?
  • 我在查询中添加了一个 concat 和表名。这应该会有所帮助。
  • 您还可以在SEPARATOR 关键字之前添加ORDER BY *colname* ASC ,以便对值进行排序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多