首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按值更改Mysql组

问按值更改Mysql组
EN

Stack Overflow用户
提问于 2016-02-22 14:52:57
回答 2查看 269关注 0票数 1

在MySQL查询中可以按参数更改组吗?例如,如果用户在下拉列表中按“周”选择期间,则按周将结果分组,如果“月”则按月分组,与“年份”相同。我正在使用Symfony2并从请求中获取$period变量。

代码语言:javascript
复制
 $period = $request->get('period');

 // value of $period are: 'day','week', 'month', 'year' 

 $sql_query = "SELECT COUNT(*), DATE_FORMAT(like_date, \"%y-%m-%d\" ) AS day, 
 WEEK(like_date) as week, MONTH(like_date) as month, YEAR(like_date) as year
 FROM user_likes
 GROUP BY date";

在这个查询中,我只按日期分组。是否可以使用CASE内部查询按参数更改组?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-22 15:05:02

RE,您对$period的评论价值是:“日”、“周”、“月”、“年”

这可能是最简单的解决办法。

代码语言:javascript
复制
$sql_query = "SELECT COUNT(*), 
                     DATE_FORMAT(like_date, \"%y-%m-%d\" ) AS date, 
                     DAY(like_date) as day, 
                     WEEK(like_date) as week, 
                     MONTH(like_date) as month, 
                     YEAR(like_date) as year
              FROM user_likes
              GROUP BY $period";
票数 1
EN

Stack Overflow用户

发布于 2016-02-22 15:14:17

假设$period变量包含其中一个值,{'day','week','month','year'}

代码语言:javascript
复制
SET @period := 'month';
SELECT 
                     COUNT(*), 
                     DATE_FORMAT(like_date, "%Y-%m-%d" ) AS date, 
                     DAY(like_date) as day, 
                     WEEK(like_date) as week, 
                     MONTH(like_date) as month, 
                     YEAR(like_date) as year
FROM user_likes
GROUP BY
     CASE 
        WHEN @period = 'day' THEN DATE_FORMAT(like_date,"%Y-%m-%d")
        WHEN @period = 'week' THEN WEEK(like_date) 
        WHEN @period = 'month' THEN MONTH(like_date) 
        WHEN @period = 'year' THEN YEAR(like_date)
      END

SQL小提琴

N:B:虽然@RiggsFolly已经给出了答案。在看到你的评论后,我强烈想马上给出答案:

@MarcB,但万一我需要比较列才能切换。$period不是列。-

您可以根据@Marc B构建动态查询,请查看SQL演示以获得更好的理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35556685

复制
相关文章

相似问题

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