mysql#1140-组列混合

hjzp0vay  于 2021-07-29  发布在  Java
关注(0)|答案(7)|浏览(319)

嗨,我想知道是否有人能解释一下下面的错误。sql在本地工作正常,但我在远程得到以下错误。
sql查询:

SELECT COUNT(node.nid), 
          node.nid AS nid, 
          node_data_field_update_date.field_update_date_value AS node_data_field_update_date_field_update_date_value
     FROM node node
LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
    WHERE node.type IN ('update')
ORDER BY node_data_field_update_date_field_update_date_value DESC

mysql说:

1140-如果没有group by子句,则将group列(min()、max()、count()、…)与没有group列混合是非法的`

nzrxty8p

nzrxty8p1#

我也是这样。只需遵循以下说明:
在拉雷维尔,去 config/database.php 搜索 'strict'=>true 属性并将其更改为 'strict'=>false .
php artisan优化
那我希望你能把它修好。再见!

vltsax25

vltsax252#

使用聚合函数的单个列可以工作,而不使用聚合函数的列的版本不能工作的原因是您需要指定 GROUP BY 条款。以下是您的查询的外观:

SELECT COUNT(n.nid), 
          n.nid, 
          ctu.field_update_date_value
     FROM NODE n
LEFT JOIN CONTENT_TYPE_UPDATE ctu ON ctu.vid = n.vid
    WHERE n.type IN ('update')
 GROUP BY n.nid, ctu.field_update_date_value
 ORDER BY field_update_date_value DESC

我把你的表别名改成了较短的-更容易阅读。以下是您的问题:

SELECT n.nid,
          COUNT(n.fake_example_column),                
          ctu.field_update_date_value
      ...
 GROUP BY n.nid, ctu.field_update_date_value

我修改了这个示例以使用一个假列,以便突出显示需要如何定义groupby。任何未在聚合函数中 Package 而引用的列都应该在 GROUP BY . 我说应该,因为mysql是我所知道的唯一一个支持 GROUP BY 在这里,您可以有选择地省略列—关于为什么查询可以在mysql上工作,但如果不更改其他dbs就不能被移植,有很多问题。显然在你的情况下,你仍然需要定义至少一个。

1yjd4xko

1yjd4xko3#

您的服务器可能只打开了\u full \u group \u by。您可以将其关闭,也可以将每个选定字段添加到组中。

a64a0gku

a64a0gku4#

在laravel框架中,设置 'strict' => false ,将修复此问题。

xriantvc

xriantvc5#

在sql中使用sum()、min()、max()等聚合函数时,必须使用group by

但在最新的sql中,您也必须将select中的所有列作为一个group by来使用。
对于您在config->database中使用的laravel项目
'严格'=>错误,
并通过运行php artisan清除配置缓存config:cache.
我想这对你会更有帮助。

shstlldc

shstlldc6#

将其剥离为基本内容:

SELECT COUNT( node.nid ) 
     FROM node node
LEFT JOIN content_type_update node_data_field_update_date ON node.vid = node_data_field_update_date.vid
    WHERE node.type IN ('update')
 ORDER BY node_data_field_update_date.field_update_date_value DESC
3zwjbxry

3zwjbxry7#

我在MySQL5.0的旧版本中也遇到了同样的问题。在更新的5.5版本中,它可以工作!

SELECT COUNT(*), id
FROM `cities` AS `c`

相关问题