gpt4 book ai didi

mysql - 如何对数百万行运行这个复杂的查询

转载 作者:行者123 更新时间:2023-11-29 22:22:40 25 4
gpt4 key购买 nike

我有数百万行 Message.rb

我正在尝试运行迁移:

add_index :messages, [:mm_id, :c_id, :s_id], unique: true, name: :mm_unique

但是迁移失败,因为它发现重复的行。我不在乎 s_id 的值是多少(只要它是整数)并且 s_id 和 mm_id 只需要在 c_id 范围内唯一即可

所以我需要做的是找到 mm_id IS NOT NULL 且 mm_id、s_id 和 c_id 有重复行的所有消息。

那么,我如何编写查询来快速解决这个问题?我想在 s_id 上设置一个随机值,只要它是整数,因为我不关心该值是什么。

最佳答案

您的查询应该是查找重复的行:

Message.joins("INNER JOIN 
( SELECT mm_id, s_id, c_id, COUNT(*) total_count
FROM messages GROUP BY mm_id, s_id, and c_id
HAVING COUNT(*) >= 2
) b ON messages.mm_id = b.mm_id AND
messages.s_id = b.s_id AND messages.c_id = b.c_id"
)
.where("messages.mm_id IS NOT NULL")
.select("messages.*, b.total_count AS duplicate")

关于mysql - 如何对数百万行运行这个复杂的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com