【问题标题】:sql query returning multiple result using WHERE使用 WHERE 返回多个结果的 sql 查询
【发布时间】:2012-10-28 01:11:36
【问题描述】:

有一个表名Top_Up。它当前的快照是:

当我对它运行查询 SELECT * FROM Top_Up WHERE Top_up_ID = (round(random() * 9 ) + 1); 时,我得到随机结果。有时它返回两个元组,有时没有元组,有时返回一个元组。

为了调试,我运行查询Select (round(random() * 9 ) + 1);,它总是在结果中只返回一个元组。

为什么我得到这个模糊和随机的结果?

【问题讨论】:

  • 当您获得多行时,您能否发布您获得的特定行(或至少是 ID 值)?另外,为什么不直接做一个select * from Top_Up where Top_up_ID<=10 order by random() limit 1;

标签: sql database postgresql select


【解决方案1】:

按行计算轮次。试试这个:

SELECT TOP 1 * FROM Top_Up ORDER BY (round(random() * 9 ) + 1);

如果您对表运行测试,您应该会看到截然不同的结果:

 Select (round(random() * 9 ) + 1) FROM Top_Up `

如果你只是想要一个随机记录,我会选择:

SELECT TOP 1 * FROM Top_Up ORDER BY NEWID()

【讨论】:

  • 最后一个查询将更好地扩展,您的原始查询只会从前 10 个中选择一个。但不确定这是不是故意的,这就是我提供它们的原因。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2010-09-25
  • 2020-10-23
  • 2020-11-25
相关资源
最近更新 更多