【问题标题】:mysql random records give a duplicate datamysql随机记录给出重复数据
【发布时间】:2016-10-16 07:39:54
【问题描述】:

我正在开发一个记录不连续的网站,记录是随机显示的。 我使用简单的 mysql 随机方法通过使用 rand() 和 limit 来显示随机记录,其中 limit 被参数化以逐个获取下一条记录。

我正在使用 asp.net mvc 框架和 mysql 数据库。

这里是mysql查询。

select distinct
lw.Lawyer_id,
lw.name,
StateName,
ct.city,
Date_of_registration,
lawyer_views,
fl.practice
from
    registration lw
        left join
    states st ON st.Id = lw.State_Id
        left join
    city ct ON ct.id = lw.City_Id
        left join
    total_views lwv ON lwv.l_id = lw.L_id
        left join
    rsuper rsub ON rsub.l_id = lw.L_Id
        left join
    lfilter fl ON fl.L_Id = lw.L_Id
where
    lw.City_Id = '577'
        and rsub.special_id = 1
        and lw.status = 'Active'
        and lw.L_id != 1
        and lw.service = 'Free'
order by rand()
limit start , pageSize

在这个查询中 pageSize 是记录的总数 18 并且 start 变量是根据参数变化的,但默认值是 0.

它在 ajax 请求中随机给出 18 条记录,但问题是它给出了一些重复的记录。

请告诉我如何防止这个或其他更好的解决方案,我也尝试了 rand() 函数的其他替代方案,但它对我没有帮助。 我使用本教程来更好地改进随机记录。 https://www.warpconduit.net/2011/03/23/selecting-a-random-record-using-mysql-benchmark-results/

【问题讨论】:

  • 你说重复,能举个例子吗?
  • 您的数据库中有重复项吗?
  • 您的基础数据中可能存在不明显的重复项,因为您没有选择所有字段
  • 我的数据库中没有重复的记录
  • 当我删除 rand() 时,由于随机记录,它的重复记录不重复。

标签: c# mysql asp.net asp.net-mvc asp.net-mvc-3


【解决方案1】:

看这里:http://jan.kneschke.de/projects/mysql/order-by-rand/ 发现了关于如何选择 rand 的研究。可能是那里的解决方案之一可以解决您的问题。

附:我不能让 cmets 所以写帖子,但它应该在 cmets...

UPD:看着MySQL select 10 random rows from 600K rows fast ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2012-12-11
    • 2010-12-10
    • 1970-01-01
    • 2016-02-01
    相关资源
    最近更新 更多