我有一個表中有5列,什麼是最簡單的方法來選擇所有行,但每列是單獨隨機化?如何從表中隨機選擇列在TSQL
所有我能想到的是分別選擇每列,與
row_number over (order by newid()) as lookup
一起,然後加入每一列回一起查找。
有沒有更簡單的方法?
謝謝
我有一個表中有5列,什麼是最簡單的方法來選擇所有行,但每列是單獨隨機化?如何從表中隨機選擇列在TSQL
所有我能想到的是分別選擇每列,與
row_number over (order by newid()) as lookup
一起,然後加入每一列回一起查找。
有沒有更簡單的方法?
謝謝
你可以準備5
有序集合和PIVOT
他們:
SELECT *
FROM (
SELECT 'col1' AS name, col1 AS col, ROW_NUMBER() OVER (ORDER BY NEWID()) AS rn
FROM table
UNION ALL
SELECT 'col2', col2, ROW_NUMBER() OVER (ORDER BY NEWID())
FROM table
UNION ALL
SELECT 'col3', col3, ROW_NUMBER() OVER (ORDER BY NEWID())
FROM table
UNION ALL
SELECT 'col4', col4, ROW_NUMBER() OVER (ORDER BY NEWID())
FROM table
UNION ALL
SELECT 'col5', col5, ROW_NUMBER() OVER (ORDER BY NEWID())
FROM table
) q
PIVOT (
MIN(col)
FOR name IN ([col1], [col2], [col3], [col4], [col5])
) pt
詳情請參見我的博客此項:
不,這是非常多的。我假設你想要每列隨機行順序(不是從同一個隨機行的所有列)。
SQL是基於行的,因此對於5列,需要將每列選擇(對於每列的隨機行)分開,然後使用arbritrary行將結果連接起來。
一個有趣的問題......