我的问题是,我需要在任何时候从dest表中获取mel列上的重复条目。
我试图用Laravel翻译这个查询,但是找不到方法:
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
我试着创建一个视图
create DEFINER = user view dest_doubles
如从dest d中选择id,则从mel中选择mel,其中d.mel = sr.mel。
select id from dest_doubles
查询将永远持续,而
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指挥部试过这个:
\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中对包含子查询的查询分块。
谢谢你的帮助
发布于 2016-11-24 08:06:06
我不是Laravel专家,但您可以将原始查询重写为表和子查询之间的INNER JOIN
。使用Laravel可能更容易。
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
https://stackoverflow.com/questions/40790633
复制