首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Laravel中用子查询正确地分块查询

如何在Laravel中用子查询正确地分块查询
EN

Stack Overflow用户
提问于 2016-11-24 16:00:17
回答 1查看 522关注 0票数 1

我的问题是,我需要在任何时候从dest表中获取mel列上的重复条目。

我试图用Laravel翻译这个查询,但是找不到方法:

代码语言:javascript
代码运行次数:0
运行
复制
select id
from dest d,
     (select mel from dest where stt = 0 group by mel having count(mel) > 1) sr
where d.mel = sr.mel

我试着创建一个视图

代码语言:javascript
代码运行次数:0
运行
复制
create DEFINER = user view dest_doubles

如从dest d中选择id,则从mel中选择mel,其中d.mel = sr.mel。

select id from dest_doubles查询将永远持续,而

代码语言:javascript
代码运行次数:0
运行
复制
select id from dest d, (select mel from dest where stt = 0 group by
mel having count(mel) > 1) sr where d.mel = sr.mel

3分钟后回复

我在Laravel指挥部试过这个:

代码语言:javascript
代码运行次数:0
运行
复制
\DB::select(\DB::raw('dest.id'))
                        ->from(\DB::raw('dest, (select mel from dest where stt = 0 group by mel having count(mel) > 1) as sr'))
                        ->whereRaw('dest.mel = sr.mel')
                        ->chunk(10000, function ($doubles) {

});

无法执行:

PDOException SQLSTATE42000:语法错误或访问冲突: 1064您的SQL语法出现了错误;检查与MySQL服务器版本对应的手册,以获得在第1行“dest.id”附近使用的正确语法

因此,我不知道如何在Laravel中对包含子查询的查询分块。

谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2016-11-24 16:06:06

我不是Laravel专家,但您可以将原始查询重写为表和子查询之间的INNER JOIN。使用Laravel可能更容易。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT id
FROM dest d
INNER JOIN
(
    SELECT mel
    FROM dest
    WHERE stt = 0
    GROUP BY mel
    HAVING COUNT(*) > 1
) AS sr
    ON d.mel = sr.mel
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40790633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档