与 group by 一起使用的 sql.xml 中的查询是不是正确?

Posted

技术标签:

【中文标题】与 group by 一起使用的 sql.xml 中的查询是不是正确?【英文标题】:Is it right query in sql.xml used with group by?与 group by 一起使用的 sql.xml 中的查询是否正确? 【发布时间】:2021-03-24 07:19:15 【问题描述】:

我使用 mysql DB,我想选择数据以使用“分组依据”。 在 MYSQL 工作台中,我检查了这个查询(REQDT、RESDT 是 varchartype)

SELECT
        DATE_FORMAT(REQDT, '%Y-%m-%d') AS REQDT,
        DATE_FORMAT(RESDT, '%Y-%m-%d') AS RESDT, SVCE_DOMAIN, COUNT(SVCE_DOMAIN)
        FROM BC_HISTORY

        GROUP BY DATE_FORMAT(REQDT, '%Y-%m-%d')

下面的查询写在 SQL.xml 上

<select id="selectpick" parameterType="JSON" resultType="JSON">

        SELECT
        DATE_FORMAT(REQDT, '%Y-%m-%d') AS REQDT,
        DATE_FORMAT(RESDT, '%Y-%m-%d') AS RESDT, SVCE_DOMAIN, COUNT(SVCE_DOMAIN)
        FROM BC_HISTORY

        GROUP BY DATE_FORMAT(REQDT, '%Y-%m-%d')

    <when test="@com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_from) and @com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_to)">
                    AND date_format(REQDT, '%Y-%m-%d') BETWEEN #log_yyyymmdd_from AND #log_yyyymmdd_to
                </when>

                <when test="@com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_from)">

                    <![CDATA[

            AND date_format(REQDT, '%Y-%m-%d') >= #log_yyyymmdd_from

            ]]>

                </when>

                <when test="@com.typhoon.framework.json.JSONValidation@notEmpty(log_yyyymmdd_to)">

                    <![CDATA[

           AND date_format(REQDT, '%Y-%m-%d') <= #log_yyyymmdd_to

            ]]>

                </when>

            </choose>

(@com.typhoon.framewroks 是库,只检查 null)

在这种情况下,我在 javascript 中使用了“DatePicker”来获取日期。并从log_yyyymmdd_fromlog_yyyymmdd_to 之间的日期中选择数据并返回到 html。但是当我运行服务器并选择日期时,它什么也没显示。任何数据都出现在 HTML 上。我想知道我在 XML 上写的查询是正确的。请救救我.....

【问题讨论】:

【参考方案1】:

我终于知道了。如果你像我一样写。您可以看到错误消息,例如 syntax error near .... 因为我在错误的地方写了 group by 子句。 所以正确的查询是写在“where”子句下的“group by”子句。 例如

    select * from table
    <where>/<where>
    group by .....

这只是一个简单的错误,但我为可能遇到与我相同问题的人编写了此解决方案。

【讨论】:

以上是关于与 group by 一起使用的 sql.xml 中的查询是不是正确?的主要内容,如果未能解决你的问题,请参考以下文章

与 GROUP BY 子句一起使用的 MAX 函数

将 Max() 与 GROUP BY 的其他字段一起使用 [重复]

GROUP BY 子句必须与聚合函数一起使用?

将GROUP BY与AVG函数一起使用 - 语法错误不正确

如何将GROUP BY与AGGREGATED列值一起使用

如何在laravel中将Group By与Join表一起使用[重复]