首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在sql数据库上工作时,laravel查询不能正常工作

在sql数据库上工作时,laravel查询不能正常工作
EN

Stack Overflow用户
提问于 2022-01-08 07:28:09
回答 2查看 126关注 0票数 0

我在phpmyadmin数据库表上运行了这个查询,运行良好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select substring_index( prefix, '.', 3 ) as subip , count(prefix) as count, prefix 
from prefixes 
GROUP BY INET_ATON(subip)/256 
order by cidr desc 

当我在laravel中运行原始查询时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$selected_prefixes = DB::select("select substring_index( prefix, '.', 3 ) as subip , count(prefix) as count, prefix 
from prefixes 
GROUP BY INET_ATON(subip)/256 
order by cidr desc ");

给出此错误:

SQLSTATE42000:语法错误或访问冲突: 1055 'portal.prefixes.prefix‘不按以下方式分组(SQL:选择substring_index(前缀,'.',3)作为subip,计数(前缀)作为计数,前缀从前缀组按INET_ATON(subip)/256顺序按cidr desc选择)

这里的示例表文件:https://www.mediafire.com/file/vwnply7ggtai52m/prefixes(5).sql/file

EN

回答 2

Stack Overflow用户

发布于 2022-01-08 08:12:41

您无法检索prefix列,因为一些类似的subip有不同的prefixes。我把例子放在下面的链接中。你可以去看看。

以下代码正常工作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select substring_index(prefix, '.', 3) as subip, count(*) as count 
from  prefixes
group by substring_index(prefix, '.', 3)

db<>fiddle中的演示

票数 1
EN

Stack Overflow用户

发布于 2022-01-08 07:35:34

在大多数SQL实现中,对不属于grouped的列执行select操作是无效的,因为应该为该列表示的实际行可能是任何分组行。

我怀疑您使用的是MySQL,它允许使用特定的设置,在这种情况下,它将从组输出一个随机值(不一定是第一个)。在运行Laravel时,database.php配置中必须有其他设置(更严格的设置)。

您可以放松数据库配置中的严格设置,也可以重写查询,这样就不会选择不属于组的列。

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

https://stackoverflow.com/questions/70633794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文