从SQL查询中拆分结果

时间:2011-09-28 08:25:29

标签: sql

例如,此SQL语句返回1k行

SELECT * FROM tableName WHERE someCondition

我的问题是:是否可以使用WHERE

1)将Resultset拆分为10个部分结果集,然后

  • 第一。将返回0% - 10%,

  • 第二。 10% - 20%,

  • 等。

2)切割范围在50-150行之间

2 个答案:

答案 0 :(得分:1)

如果您使用的是oracle数据库,这非常简单。

您可以使用ROWNUM关键字以下列方式完成此任务。

select * from 
( 
     select tb.*,rownum t_count from table_name tb
) ss
where ss.t_count >= @min_value and ss.t_count <= @max_value

其中@min_value和@max_value是您想要获取数据的范围... 实际上它将适用于内部查询和临时表的概念。

这就是为什么它会在一次性中为所有数据提供良好的性能。

答案 1 :(得分:1)

<块引用>

我的问题是:是否可以使用 WHERE

我的回答是:是的,有可能。

其中一种解决方案是使用 function NomsStyleBotanique(){ const classeur = SpreadsheetApp.getActive(); // var Feuille = classeur.getSheetByName('Feuille 1'); var ligne = classeur.getCurrentCell().getRow(); var colonne = classeur.getCurrentCell().getColumn(); var range = classeur.getActiveRange(); var richTextValues = range.getRichTextValues().map(([a]) => { var text = a.getText(); var pos = 0; var myregEx = /,/g; var Noms = text.split(myregEx); var textStyleNomPlante = SpreadsheetApp.newTextStyle() .setFontSize(10) .setForegroundColor("black") .setFontFamily("Times New Roman") .setItalic(false) .build(); var textStyleNomAuteur = SpreadsheetApp.newTextStyle() .setFontSize(10) .setForegroundColor("#616399") // ("grey") .setFontFamily("Times New Roman") .setItalic(true) .build(); var nbPhrases = []; var i =0; while (Noms){ i++; nbPhrases.push(Noms[i]); // SpreadsheetApp.getUi().alert(Noms[i]); for (var i=0;i<nbPhrases.length;i++){ var myarr = Noms[i].split(" "); var Espace1 = myarr[0].length+1; var Espace2 = myarr[1].length+1; if (Noms[i]){ if ((Noms[i].indexOf("subsp") > 1) || (Noms[i].indexOf("var.") > 1)){ var Espace3 = myarr[2].length+1; var Espace4 = myarr[3].length+1; pos = Espace1+Espace2+Espace3+Espace4; } else { pos = Espace1+Espace2; } // pos = text.match(new RegExp(/\\s/, 'g'))[2]; var position = pos; if (position > -1){ var temp = a.getTextStyle(0, position - 1); return [ SpreadsheetApp.newRichTextValue() .setText(Noms[i]) .setTextStyle(0, position - 1, textStyleNomPlante) .setTextStyle(position, Noms[i].length, textStyleNomAuteur) .build() ]; } return [SpreadsheetApp.newRichTextValue().setText(Noms[i]).setTextStyle(Noms[i].getTextStyle()).build()]; } } } } // fin boucle ); range.setRichTextValues(richTextValues); } 函数。 MOD 函数返回一个数除以另一个数的余数,该函数接受两个参数:

MOD
  • MOD(dividend,divisor) 是要除以的文字数或数值表达式。
  • dividend 是一个文字数或一个数字表达式,用于除以除数。

特别是,将数据分成十部分,在您的示例中,如下所示:

divisor

SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 1 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 2 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 3 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 4 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 5 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 6 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 7 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 8 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 9 SELECT * FROM tableName WHERE mod(INDEX_ID, 10) = 0 是来自 INDEX_IDindex