【问题标题】:How to select random rows where the sum of a column equals to X - MySQL如何选择列之和等于 X 的随机行 - MySQL
【发布时间】:2017-06-30 19:46:16
【问题描述】:

当列的总和等于一个值时,我如何选择表的随机行? (MySQL)

    Value : 3

    Name               Price
    ------------------------
    A                  1
    B                  2
    C                  1
    D                  3
    E                  2

我想得到所有的可能性(A + B、D、E + C...)。

我已经尝试过这样做:

SELECT * FROM table HAVING SUM(column) = 3 ORDER BY RAND();

谢谢 蒂博

【问题讨论】:

  • 欢迎来到 Stack Overflow。请包括您为自行解决此问题所做的任何尝试。如果您还没有尝试解决自己的问题,那么您可能有点先发制人地在这里发布了您的问题。
  • 使用自连接获取所有对,然后ORDER BY RAND() LIMIT 1 随机选择其中一个。
  • 你能给我举个例子吗? @Barmar

标签: mysql random rows


【解决方案1】:

您需要将表与自身连接以获得成对的行。

SELECT t1.name as name1, t1.price as price1, t2.name AS name2, t2.price AS price2
FROM yourTable AS t1
JOIN yourTable AS t2 ON t1.price + t2.price = 3
ORDER BY RAND()
LIMIT 1

【讨论】:

  • 最后一个问题,是否可以定义超过 2 种可能性? (可能的最大值,不加t3、t4等)
  • 可能有办法,但我不知道该怎么做。
  • 这处理 x + y,但不处理 x + y + z。也许 SUM() 可以帮助解决这个问题,但这并不是 SQL 真正擅长的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
相关资源
最近更新 更多