我在MySQL上创建了一个视图,它产生如下随机结果:
SELECT word1,word2,word3 FROM view_name ORDER BY rand()LIMIT 50
word1 | word2 | word3 |
------+-------+-------+
foo2 | bar2 | baz2 |
foo1 | bar1 | baz1 |
foo3 | bar3 | baz3 |
我需要找到一种方法,从这3行中随机创建另外47行以达到“限制”。
查询也将应用于类似的视图(超过50行),但在这种情况下,我仍然需要将限制设置为50 max(忽略重复过程并从select返回行)。
有可能吗?我怎么能这样做?
的更新 的 对不起,我会尽力解释一下。我有这种情况:
目标是准确返回50行。如果视图返回少于50,我需要生成剩余的行。如果视图返回超过50行,则仅返回50。
E.g:
答案 0 :(得分:0)
您可以尝试这样的事情:
SELECT final.tempval1, final.tempval2, final.tempval3
FROM (
SELECT temptable1.tempval4 AS tempval1, temptable5.word2 AS tempval2, temptable6.word3 AS tempval3
FROM (
SELECT temptable2.word1 AS tempval4, temptable2.word2 AS tempval5, temptable2.word3 AS tempval6
FROM view_name temptable2
LEFT JOIN view_name temptable3 ON temptable2.word1 = temptable3.word1
LEFT JOIN view_name temptable4 ON temptable3.word2 = temptable4.word2 ORDER BY RAND() LIMIT 50 offset 3
) temptable1
LEFT JOIN view_name temptable5 ON temptable1.tempval4 = temptable5.word1
LEFT JOIN view_name temptable6 ON temptable5.word2 = temptable6.word2
LIMIT 0, 50
) final
ORDER BY RAND() LIMIT 50
我花了一段时间才弄明白你到底要找什么,我仍然不确定我是否理解正确,如果它不起作用,请随时告诉我。