【问题标题】:mysql coupled OR statementmysql 耦合 OR 语句
【发布时间】:2017-12-15 06:09:23
【问题描述】:

我正在尝试做一个耦合或语句

select * from table where cat = "x" OR (cat = "y" AND rand()<=0.25);

所以我想选择所有带有 cat = x 或 cat = y 的项目,但只选择 y 的 25%。上面的陈述给出了 x 和 y 的 25%。

我怎样才能分开我的陈述,这样才能做到这一点?

谢谢

【问题讨论】:

  • “但只有 25% 的 y”是什么意思?
  • 如果 cat="x" 则不能使用 OR 执行此操作,那么它甚至不会尝试查看 Y。这给了你所有 X 和 Y 的四分之一
  • 奇怪的行为。也许代替 OR 使用 union ?我想在 sqlfiddle.com 或 rextest.com 示例中看到这种行为。因为如果随机数小于 25%,则应仅返回所有 x 和 y 注意:不能保证 y 的 25%。您可以保证的是,如果 0 和 1 之间的随机值是

标签: mysql sql random sql-function


【解决方案1】:

我不知道你在做什么,但我几乎可以闻到这是一种非常狡猾的 SQL 实现方式。

我假设,如果随机数以 %25 的概率生成结果,您想更改 where 子句。如果 cat="x" 则不能使用 OR 执行此操作,那么它甚至不会尝试查看 Y。这给出了u 所有 X 和 Y 的四分之一。

试试这个实现概率检查。

IF  (RAND() <= 0.25)  
     { sql_statement_forY  }   
[ ELSE   
     { sql_statement_forX  } ]  

【讨论】:

    猜你喜欢
    • 2021-05-15
    • 2012-02-25
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2017-11-16
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多