0

table1 と table2 の 2 つのテーブルがあります。両方とも、rollnum,name という 2 つの列が含まれています。ここで、table1 からすべての行を選択し、table2 からランダムに 5 行を選択したいと考えています。私はこのように書いています

select rollnum,name from table1 union (select top 5 rollnum,name from table2 order by NEWID()) 

エラーが表示されますが、ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.助けてください。間違いは NEWID() にあると思います。ここで、ロール番号は主キーです

4

2 に答える 2

1

問題はブラケットにあります。代わりにこれを試してください

 select rollnum,name from table1 
 union 
 select * from (select top 5 rollnum,name from table2 order by NEWID())  t

エントリが重複する可能性がある場合は、union all代わりにunion

于 2013-10-10T07:04:00.953 に答える
-1

これを試して..

SELECT  rollnum AS 'NewID' ,
        name
FROM    table1
UNION
SELECT TOP 5
       rollnum ,
       name
FROM    table2
ORDER BY NewID

NEWID() は、uniqueidentifier データ型として宣言された変数に値を代入する関数です。

于 2013-10-10T06:42:07.047 に答える