我正在尝试将结果限制为随机集。到目前为止,我有这个查询工作:
MATCH (n),
RETURN n, rand() as random
ORDER BY random
LIMIT 25
但是,在尝试使用随机数替换LIMIT 25
时,出现以下两个密码示例中的错误:
MATCH (n)
RETURN n, rand() as random, toInt(rand()*25) as randCount
ORDER BY random
LIMIT randCount
在上文中,删除LIMIT会正确返回randcount
WITH toInt(rand()*25) as randCount
MATCH (n)
RETURN n, rand() as random
ORDER BY random
LIMIT randCount
我的直接想法是Cypher(还)不支持使用变量/表达式来限制结果...或者我做错了;-)
答案 0 :(得分:2)
我尝试了你的例子,你说得对,cypher不支持变量作为LIMIT
的参数。
以下是您正在寻找的证据:
我开始了上面的查询:
PROFILE
MATCH (n)
RETURN n, rand() as random, toInt(rand()*25) as randCount
ORDER BY random
LIMIT 1
结果如下:
正如您在配置文件结果中看到的那样,{radCount受影响之前会执行LIMIT
,因此当您执行LIMIT randCount
randCount时,就像您创建的所有其他变量一样。
即使在Projection部分中进行了随机操作,其值也不会立即影响到randCount。