1

私はJavaで(iBatis、JDBCなどを実際にSQLで使用して)次のようなことをしたいと思います:

SELECT SUM(rowName) FROM myTable WHERE id = [myArrayOfIds]

myArrayOfIds は、ほぼ任意の長さにできます。今、私はあなたができることを知っています:

SELECT SUM(rowName) FROM myTable WHERE id IN (x, y, z)

しかし、より長いリストの場合はどうなるでしょうか? たとえば、私のリストは数個のアイテムから数百個以上のアイテムまで可能です。これどうやってするの?

4

3 に答える 3

1

1つの代替手段は、それらのIDをテーブルに挿入してから結合することです

SELECT SUM(rowName) FROM myTable ta inner join tempTable tb on ta.id = tb.id
于 2009-09-30T15:44:12.907 に答える
1

それはあなたのSQLのフレーバーに依存すると思います。IN()たとえば、Oracle では、1 つのリストに 1000 を超える値を含めることはできません。他のフレーバーは異なる場合があります。

于 2009-09-30T15:49:35.083 に答える
0

INオラクルは間違いなく、句で 1000 を超えるアイテムを許可します。これを制限しているのは永続化ツールです。 iBatisまたは休止状態、何でも。Oracle Sqlplus を使用すると、これが Oracle の制限ではないことがわかります。

BlackTigerX からの提案が機能するか、クエリを複数回呼び出して、一度に 1000 項目を渡し、結果を集計することができます。いずれにせよ、永続化ツールの制限を回避しているだけです。

于 2011-04-25T04:17:19.180 に答える