我可以从预定义列表中为查询选择5个随机值吗?说我这样做:
DECLARE @colors TABLE (Color VARCHAR(50))
INSERT INTO @colors
SELECT DISTINCT Color
FROM [dbx].[dbo].[SampleData]
但我宁愿做类似的事情:
SELECT RANDOM_VALUE() FROM ('Red', 'Blue', 'Orange', ...
显然,最后一个块不会起作用,但希望你能得到这个想法。我感谢任何帮助。谢谢!
答案 0 :(得分:1)
SELECT TOP 5 * FROM **QUERY** ORDER BY NEWID()
这将获得5行并随机排序。
编辑
这会有效吗?
DECLARE @temptbl TABLE(colour VARCHAR(100))
INSERT INTO @temptbl SELECT ('red') UNION SELECT ('blue') UNION SELECT ('green')
SELECT TOP 2 colour FROM @temptbl ORDER BY NEWID()
答案 1 :(得分:1)
由于这一点似乎是避免永久存储少数几种颜色,因此这里有几种选择。
这很难看,但你可以将一堆静态值结合在一起:
SELECT TOP 5 *
FROM (
SELECT 'Red'
UNION ALL
SELECT 'Blue'
UNION ALL
SELECT 'Green'
... etc. ...
ORDER BY NEWID()
更好的方法是将静态值填充到表参数中:
DECLARE @colors TABLE (Name VARCHAR(20) NOT NULL)
INSERT INTO @colors VALUES
('Red'),
('Blue'),
('Green'),
... etc. ...
SELECT TOP 5 *
FROM @colors
ORDER BY NEWID()
答案 2 :(得分:0)
SELECT TOP 5 *
FROM Colors
ORDER BY NEWID()