1

我可以从预定义列表中选择 5 个随机值进行查询吗?说我这样做:

DECLARE @colors TABLE (Color VARCHAR(50))

INSERT INTO @colors
SELECT DISTINCT Color
FROM [dbx].[dbo].[SampleData]

但我宁愿做类似的事情:

SELECT RANDOM_VALUE() FROM ('Red', 'Blue', 'Orange', ...

显然,这最后一个块不起作用,但希望你明白这一点。我很感激任何帮助。谢谢!

4

3 回答 3

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()
于 2013-08-16T15:42:30.583 回答
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()
于 2013-08-16T16:08:57.737 回答
0
SELECT TOP 5 *
FROM Colors
ORDER BY NEWID()
于 2013-08-16T15:42:20.100 回答