SELECT列表不在GROUP BY子句中,并且包含非聚合列?

时间:2019-10-02 07:13:57

标签: mysql

我已经写了一些本地主机支持的查询,但是当我上传到服务器时,它在查询中显示了一些错误。

我的查询

 grouped = candidateWithTreatment.map(row => (row.getString(2) + "-" + row.getString(4), List(row))).reduceByKey(_ ::: _)


      grouped.foreachRDD(eachRDD => {     
         //    create spark session or sqlcontext
              eachRDD.foreach(eachRow => {        

     val rowsRDD = sqlContext.sparkContext.parallelize[Row](rows)
        val eachDF = sqlContext.createDataFrame(rowsRDD, columnSchema)
        eachModelDF.createOrReplaceTempView("table")

        val filteredDF = sqlContext.sql("select from table based on my dynamically generated sql"))
          .limit(fLimit.toInt).limit(sLimit.toInt)
          })
          })

我的错误 enter image description here

2 个答案:

答案 0 :(得分:0)

如果您有足够的权限,可以尝试使用此方法

set global sql_mode = 'NO_ENGINE_SUBSTITUTION';

但是我认为这不是一个好的解决方案。

答案 1 :(得分:0)

发生错误是因为您对“金额”(SUM(Amount))进行汇总,而不是对您使用的其他字段进行汇总。

激活“ only_full_group_by”模式并至少进行一次汇总时,需要对所有未包含在“ group by”子句中的字段进行汇总。

您可以对您使用的所有其他字段进行类似min(), max(), sum(), ...的聚合,也可以在MySql服务器上停用该模式。