Sql server 如何使用Orderby子句合并两个表?
我有两张桌子——表一和表二。两者都包含两列-rollnum,name。现在我想从表1中选择所有行,从表2中随机选择5行。我是这样写的Sql server 如何使用Orderby子句合并两个表?,sql-server,Sql Server,我有两张桌子——表一和表二。两者都包含两列-rollnum,name。现在我想从表1中选择所有行,从表2中随机选择5行。我是这样写的 select rollnum,name from table1 union (select top 5 rollnum,name from table2 order by NEWID()) 但如果语句包含UNION、INTERSECT或EXCEPT运算符,则它会显示一个错误选择列表中必须出现ORDER BY items。请帮助。我认为错误在NEWID()。这里
select rollnum,name from table1 union (select top 5 rollnum,name from table2 order by NEWID())
但如果语句包含UNION、INTERSECT或EXCEPT运算符,则它会显示一个错误选择列表中必须出现ORDER BY items。
请帮助。我认为错误在NEWID()。这里rollnum是主键试试这个
SELECT rollnum AS 'NewID' ,
name
FROM table1
UNION
SELECT TOP 5
rollnum ,
name
FROM table2
ORDER BY NewID
NEWID()是一个函数,它为声明为uniqueidentifier数据类型的变量赋值。问题在于括号。试试这个
select rollnum,name from table1
union
select * from (select top 5 rollnum,name from table2 order by NEWID()) t
如果您可以有重复的条目,您可能需要考虑<代码>联合所有而不是<代码>联合< /COD> < /P>您为什么要在查询中使用NeWess()。你对NEWID的使用无效,不符合OP的要求吗?@Prashant16我已经试过了。它不会产生任何错误。但是表2的内容不是随机的。@Podyluska是的,很酷!!但是你能解释一下这个“t”的目的吗??谢谢你没有。。它只是一个别名。您也可以使用select t.rollnum和t.name