只选择一半的记录

时间:2009-03-26 16:53:40

标签: tsql

我试图弄清楚如何选择ID为空的记录的一半。我想要一半,因为我将使用该结果集来更新另一个ID字段。然后我将使用该ID字段的另一个值更新其余部分。

所以基本上我想用一个数字更新一半记录someFieldID,其余用另一个数字将更新基本分割为someFieldID我想要更新的字段的两个值。

4 个答案:

答案 0 :(得分:11)

在oracle中,您可以使用ROWNUM psuedocolumn。我相信在sql server中你可以使用TOP。 例如:

select TOP 50 PERCENT * from table

答案 1 :(得分:6)

您可以按百分比选择:

 SELECT TOP 50 PERCENT *fields* FROM YourTable WHERE ...

答案 2 :(得分:4)

update x set id=@value from (select top 50 percent * from table where id is null) x

答案 3 :(得分:1)

以下SQL将返回表的前半部分的col_ids。

SELECT col_id FROM table
WHERE rownum <= (SELECT count(col_id)/2 FROM table);

如果col_ids的总数是奇数,那么你将获得前半部分 - 1.这是因为,例如,我们总共有51条记录,count(col_id)/ 2返回25.5,并且因为有没有rownum等于这个结果,我们得到的一切都等于25及以下。这意味着其他26人不会被退回。

但是,我没有看到反向声明有效:

SELECT col_id FROM table
WHERE rownum > (SELECT count(col_id)/2 FROM table);

因此,如果你想要表的另一半,你可以将第一个结果存储到临时表中,我们称之为TABLE_A。然后在这张表的原始表格上做MINUS:

SELECT col_id FROM table
减号
SELECT col_id FROM table_a

希望这有助于某人。