读书人

发现这个话语是错的啊不能执行

发布时间: 2013-03-22 09:49:50 作者: rapoo

发现这个语句是错的啊???不能执行
select top 6 * from T_EXAM where type=1 and difficulty=1 and distinguish=1 order by newid()
union all
select top 2 * from T_EXAM where type=2 and difficulty=1 and distinguish=1 order by newid()
union all
select top 5 * from T_EXAM where type=2 and difficulty=2 and distinguish=1 order by newid()
union all
select top 7 * from T_EXAM where type=2 and difficulty=2 and distinguish=2 order by newid()


加了newid()是不行了。


[解决办法]
lz要的结果什么?
这样?

SELECT  *
FROM ( SELECT TOP 6
*
FROM T_EXAM
WHERE type = 1
AND difficulty = 1
AND distinguish = 1
UNION ALL
SELECT TOP 2
*
FROM T_EXAM
WHERE type = 2
AND difficulty = 1
AND distinguish = 1
UNION ALL
SELECT TOP 5
*
FROM T_EXAM
WHERE type = 2
AND difficulty = 2
AND distinguish = 1
UNION ALL
SELECT TOP 7
*
FROM T_EXAM
WHERE type = 2
AND difficulty = 2


AND distinguish = 2
) T
ORDER BY NEWID()

读书人网 >SQL Server

热点推荐