【问题标题】:use functions in a simplistic SELECT/WHERE clause在简单的 SELECT/WHERE 子句中使用函数
【发布时间】:2013-08-10 13:09:03
【问题描述】:

我可以在 SQL(MySQL、SQL Server 等)中使用这种简单(不涉及“集合”)语法:

SELECT 1+1;
SELECT RAND();

但我不允许我使用这个:

SELECT RAND() WHERE ( RAND() < 0.5 )

它与 sql 集没有交互,但我认为语法是合法的,应该允许这样做

欢迎提出想法... ;)

【问题讨论】:

  • 你想做什么?如果它只获得 0 到 0.5 之间的随机值,请执行以下操作:SELECT RAND() * 0.5;
  • 正是你所看到的......只需从随机值中获取一组......

标签: sql function select syntax where


【解决方案1】:

你的查询是

select rand() - 获取 0 到 1 的随机数 然后过滤它

where rand() &lt; 0.5 - 获取另一个从 0 到 1 的随机数,如果它

如果你想得到0到0.5之间的随机数,你应该做SELECT RAND() * 0.5

更新

;with cte as (
    select * from (select rand() as number) as a where number < 0.5
    union all
    select * from (select rand() as number) as a where number < 0.5
)
select * from cte

【讨论】:

  • 是的...这应该给我一组低于 0.5 的值并在值高于 0.5 时中断...我认为问题出在这里... SQL 不知道下 SQL- SET 项目计数迭代...我正在尝试从已经经历过类似情况的 SQL 专家那里获取更多数据... ;)
  • 好的...我明白您对 UNION 的想法,但这不是我想要的...任何语法不适用于 mySQL...适用于 MSSQL...我想想 WITH() 语句......你能在这里给我一个线索吗?
  • 如果您提供所需的输出,帮助您会更简单
  • 感谢您的耐心罗马...我想要的是输出一组随机数...具有随机长度...所以如果“SELECT rand() WHERE rand()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 2018-09-06
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多