【问题标题】:SQL Unique Values from each column每列的 SQL 唯一值
【发布时间】:2017-05-21 14:42:50
【问题描述】:

所以我试图从每一列中获取唯一值。目前我已经尝试过了。

日期:周一、周二、周三、周四、周五

时间:8-10am、10-12pm、1-3pm、3-5pm、5-7pm

SELECT DISTINCT Day, Time FROM table GROUP BY Day, Time;

示例:

Monday    8-10am
Monday    3-5pm
Monday    5-7pm
Tuesday   10-12pm
Tuesday   5-7pm
Wednesday 3-5pm
Thursday  10-12pm
Thursday   1-3pm
Friday    8-10am
Friday    1-3pm

这不会为每列提供唯一值,而是为 DAY 中的每个 TIME 提供唯一值。

SELECT
(SELECT group_concat(DISTINCT Day) FROM workingTimeDate) as Day,
(SELECT group_concat(DISTINCT Time) FROM workingTimeDate) as Time
FROM workingTimeDate;

这将给出:

Monday,Tuesday,Wednesday,Thursday,Friday   8-10am,10-12pm,1-3pm,3-5pm,5-7pm

这会将值分成两列,但我希望它们在单独的列中。

我想要的是

Day        Time
Monday     8-10am
Tuesday    10-12pm
Wednesday  1-3pm
Thursday   3-5pm
Friday     5-7pm

【问题讨论】:

  • 最好向我们展示示例数据和预期输出
  • 显示一些示例数据,以便我们真正了解您关于唯一值的问题。
  • 为什么有人要这样做?在您的结果集中,DayTime 之间没有关系。也有可能不同天数和不同时间数不相等。
  • 我同意保罗·斯皮格尔的观点。进行这两个单独的查询,一个针对不同的日子,另一个针对不同的时间。

标签: mysql sql


【解决方案1】:

你可以这样做:

select distinct day, cast(NULL as time) from t
union all
select distinct cast(NULL as date), time from t;

【讨论】:

  • 我猜但是可以删除空值吗?
【解决方案2】:

所以你想要的是:

 select Day, 
        group_concat(time, ', ') as t
   FROM table 
  GROUP BY Day

【讨论】:

  • 这至少是有意义的。
猜你喜欢
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
相关资源
最近更新 更多