Sql 使用语句中每个值的相等百分比更新表

Sql 使用语句中每个值的相等百分比更新表,sql,Sql,我想写一个更新声明,类似于这个 UPDATE top (15) percent magTable SET Name= 'Issue' WHERE magID IN ('TNE', 'TBB', 'DTT', 'HTF') 但是我需要它取in语句中每个值的15%。我正在寻找一种更优雅的方式来编写它,而不是将它分成4个不同的更新语句(每个magID一个) 我对这一点相当陌生(这可能是显而易见的):D提前感谢你的帮助 答案是您可能可以,但我认为不值得这么麻烦,特别是对于四行代码。我不得不通过

我想写一个更新声明,类似于这个

UPDATE top (15) percent magTable    
SET Name= 'Issue'
WHERE magID IN ('TNE', 'TBB', 'DTT', 'HTF')
但是我需要它取in语句中每个值的15%。我正在寻找一种更优雅的方式来编写它,而不是将它分成4个不同的更新语句(每个magID一个)


我对这一点相当陌生(这可能是显而易见的):D提前感谢你的帮助

答案是您可能可以,但我认为不值得这么麻烦,特别是对于四行代码。我不得不通过复制每一行来执行更多的更新,只要做一些小的修改。优点是您可以准确地看到自己正在做什么,而对于一组更复杂的代码,您可能无法轻松地遵循它

 UPDATE top (15) percent magTable SET Name= 'Issue' WHERE magID = 'TNE'
 UPDATE top (15) percent magTable SET Name= 'Issue' WHERE magID = 'TBB'
 UPDATE top (15) percent magTable SET Name= 'Issue' WHERE magID = 'DTT'
 UPDATE top (15) percent magTable SET Name= 'Issue' WHERE magID = 'HTF'

另外,正如其他人所提到的,使用TOP而不使用ORDER BY将为您提供存储在表中的前15%,这可能只是基于您的导入文件。除非将输入文件随机化,否则它不是随机样本。

15%“随机”??命令?你在做样本分析吗?我也不明白。我可以向您提供一个查询来完成此操作。但背后的原因是什么?如果可能的话,我会尽量避免。每周都有一定比例的magID提供给外部供应商。如果只有真正的4个,我不介意将它们分开,但是有更多的update语句使用类似的语法,并且经常会发生更改,所以用一种更简单的方式编写这篇文章将非常有帮助。对不起,如果我听起来完全无知。非常感谢你的帮助!即使将输入随机化,也不是所谓的“随机”样本。SQL规范在返回行时不保证任何类型的顺序(而且它不应该保证,因为表是基于没有顺序的关系的)。您可能会在某些DBMS产品中找到订单,但即使在这里也无法保证。True。随机选择的最佳实践是
orderbynewid()
,对吗?取决于您如何定义随机。如果您可以使用伪随机,那么如果您的DBMS系统支持NEWID()函数(例如Microsoft SQL Server),它就可以完成这项工作(但是NEWID()并不是大多数统计人员所说的“统计随机”)。在DBA SE上查看Ebarr的答案: