我可以在 SQL(MySQL、SQL Server 等)中使用这种简单的(不涉及“设置”)语法:
SELECT 1+1;
SELECT RAND();
但我不允许我使用它:
SELECT RAND() WHERE ( RAND() < 0.5 )
它与 sql 集没有交互,但我认为语法是合法的,应该允许这样做
欢迎提出想法... ;)
你的查询确实
select rand()
- 获取从 0 到 1 的随机数,然后将其过滤
where rand() < 0.5
- 获取另一个从 0 到 1 的随机数,如果它 < 0.5,则返回 1 行,前一个数,否则返回 0 行
如果你想得到从 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