MYSQL INNER JOIN FUNCTION ERROR SELECT 列表的表达式 #2 不在 GROUP BY 子句中

标签 mysql sql

我希望将一个表中的值插入到另一个表中。

我有大约 15,000 条记录,因此我担心运行查询并将相关记录插入新表所需的时间。为了减少它查询的数据量,我尝试包含一个 INNER JOIN 函数,将其限制为数据子集,但是遇到了很多麻烦。

整个表上查询的简化版本如下所示:

INSERT INTO logic (formId, A1Logic, date) 
SELECT formId, JSON_OBJECT("logic1",JSON_ARRAY(L1A,L1B,L1C)), "'+date+'"
FROM preferences 
WHERE L1A NOT LIKE "%Select question title%" AND L1A <> ""

当包含内部联接时,我认为它会如下所示,但是我收到错误:SELECT 列表的表达式 #2 不在 GROUP BY 子句中并且包含非聚合列

INSERT INTO logic (formId, A1Logic, date)
SELECT a.formId, JSON_OBJECT("logic1",JSON_ARRAY(a.L1A,a.L1B,a.L1C)), "'+date+'" 
FROM preferences a
INNER JOIN (SELECT formId, L1A, L1B, L1C, MAX(entryID) AS MaxEntryId FROM preferences GROUP BY formId) b 
ON a.formId = b.formId AND a.entryID = b.MaxEntryId 
WHERE L1A NOT LIKE "%Select question title%" AND L1A <> “"

最佳答案

子查询是你的问题。

  • 从首选项 GROUP BY formId 中选择 formId、L1A、L1B、L1C、MAX(entryID) AS MaxEntryId


根据您自己的错误消息,SELECT 中提到的每个字段都必须位于聚合函数中(例如您使用 MAX() 的位置) ,或在GROUP BY中提及。

  • L1A、L1B、L1C 不在聚合中,也不在 GROUP BY


您需要类似以下内容之一:

  1. 从首选项 GROUP BY formId 中选择 formId、L1A、L1B、L1C、MAX(entryID) AS MaxEntryId、L1A、L1B、L1C
  2. SELECT formId,MAX(L1A) AS L1A、MAX(L1B) AS L1B、MAX(L1C) AS L1C , MAX(entryID) AS MaxEntryId FROM 首选项 GROUP BY formId

无法确切地告诉我们您需要什么,因为您没有告诉我们有关表首选项和/或您的子查询要做什么的信息。

关于MYSQL INNER JOIN FUNCTION ERROR SELECT 列表的表达式 #2 不在 GROUP BY 子句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033087/

相关文章:

mysql - Django Raw Query SQL 注入(inject)显示攻击

sql - 如何使用扩展 pg_trgm 中的 % 运算符?

MySql 排序不正确

mysql - Windows非管理员环境下启动MySQL

mysql - 按字段组合排序

mysql - 尝试获得每个销售 channel 的前 10 名产品

MySQL 以 5 分钟为间隔订购 block

java - derby + hibernate ConstraintViolationException 使用多对多关系

MySQL 选择类别

java - 通过 servlet 在 oracle 中获取第 2 行、第 3 行....200 行的表