【问题标题】:Select a random distinct row选择一个随机的不同行
【发布时间】:2014-06-05 05:55:44
【问题描述】:

我在 mysql 中有一个名为 drugs 的表,其中包含 3 列(id、illness、drug)。
一个疾病可能会在列中出现多次,但使用不同的药物

我需要一个代码来选择不同的疾病,但它应该使用随机标准,以便它可以显示不同的药物

mydb 中的示例...

id | illness | drug
------------------------------
1  |malaria  |panadol    
2  |malaria  |hedex  
3  |malaria  |tripple action    
4  |fever    |panadol  

我试过这个,但在选择药物行时并不是随机的。一直只选择一种治疗疟疾的药物。

$quotes="SELECT drug,remedy FROM drugs group by drug";

我需要这个输出

 1   | malaria   | panadol or hedex or tripple action **//any but random**  
 2   | fever     | panadol **//random drug if i add other rows of fever**

【问题讨论】:

  • drug 标准是随机的...你也必须抓住随机的illness 吗?还是你在where 子句中给出illness
  • 这里stackoverflow.com/questions/16044828/…你的问题是为postgre回答的,试试这样在mysql中也可能有用
  • 显示你需要的输出
  • 检查我的问题,我进行了一些编辑以显示所需的输出

标签: php mysql


【解决方案1】:

试试这个

$quotes="SELECT drug,remedy FROM drugs WHERE id = (1+ RAND()*(SELECT MAX(id) FROM drugs)) group by drug";

【讨论】:

  • MySQL 返回一个空结果集(即零行)。但我的数据库中有各种行。
  • 运行 3-4 次后把你的 ans 放在这里。 SELECT FLOOR(RAND()*(SELECT MAX(id) FROM drug))
  • SELECT FLOOR(RAND()*(SELECT MAX(id) FROM drugs)); 给出输出 0,3,4,2,7,3,1
  • 你的表中的最大 id 是多少?
【解决方案2】:

或者在mysql中 $select = 'select * from drugs order by rand() limit 1'; 这将随机获取行,然后仅针对其中之一限制答案。 您也可以在查询中添加where 子句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多