我想從表中選擇5個隨機行,但只能從最近的20行中選擇。我知道2個報表中單獨會是這樣的:如何從20個最近的行中選擇5個隨機行?
SELECT * FROM table ORDER BY RAND() LIMIT 5
SELECT * FROM table ORDER BY date DESC LIMIT 20
我將如何結合這2所陳述所以它會選擇最近的20排5個隨機行?謝謝。
我想從表中選擇5個隨機行,但只能從最近的20行中選擇。我知道2個報表中單獨會是這樣的:如何從20個最近的行中選擇5個隨機行?
SELECT * FROM table ORDER BY RAND() LIMIT 5
SELECT * FROM table ORDER BY date DESC LIMIT 20
我將如何結合這2所陳述所以它會選擇最近的20排5個隨機行?謝謝。
使用嵌套查詢
SELECT foo.* FROM (SELECT * FROM table ORDER BY date DESC LIMIT 20) as foo
ORDER BY RAND() LIMIT 5
只需將其嵌套:
SELECT * FROM (
SELECT * FROM table ORDER BY date DESC LIMIT 20
) ORDER BY RAND() LIMIT 5
查找子查詢!
SELECT d.* FROM (SELECT * FROM table ORDER BY date DESC LIMIT 20) as d ORDER BY RAND() LIMIT 5;
這一個是唯一的答案,順便說一句。沒有使用「as foo」和「foo」。它不起作用。你知道這是爲什麼嗎? – user1413341
@ user1413341 MySQL要求所有派生表和子查詢都有自己的別名。這正是我試圖打出足夠快的速度與這兩者競爭的結果。 = P –
我明白了。謝謝! – user1413341