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

时间:2015-06-29 17:43:42

标签: sql

我正在寻找一个类似于此的更新声明......

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

但是我需要它在IN语句中占据每个值的15%。我正在寻找一种更优雅的方式来写这个,而不是将它分成4个不同的更新语句(每个magID一个)。

我对此很新(这可能是显而易见的):D先谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

答案是你可能会这么做,但我认为这不值得,特别是只有四行代码。我只需通过复制每一行进行小修改就必须执行更多更新。优点是您可以准确地看到您正在做的事情,而使用更复杂的代码集,您可能无法轻松地遵循它。

 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'

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