0

単一のクエリを使用して、特定の列に同じ値を持つテーブルからすべてのレコードを選択できるようにしたいと考えています。

明確化

条件: - document_id は主キーではありません。

リスト ID = SELECT DISTINCT T.document_id FROM テーブル T;

list block = SELECT * from table where document_id = ids.next();

  • ブロックに対して操作を実行し、次のブロックを取得します

これら 2 つのクエリを 1 つのクエリに変換する方法を教えてください。

アップデート

@Marco @StephanB私の質問が漠然としていて本当に申し訳ありません...もっと具体的にすることを学ぶ必要があります...

とにかく、私は Torque で JAVA と Apache Turbine を使用しています。変更したいコードは次のとおりです。

public void runQueue (String username, Customer customer) {
    Criteria c = new Criteria();
    c.add( DataEntryQueuePeer.CUSTOMER_ID, customer.getId());//DataEntryQueue.CUSTOMER_ID is not the primary key
    c.add( DataEntryQueuePeer.STATUS, DataEntryQueue.STATUS_IN_KEYING );
    c.add( DataEntryQueuePeer.DATA_ENTRY_USERID, username );
    c.add( DataEntryQueuePeer.QUEUE_TYPE, Constants.CUSTOMER_QUEUE );

    List<DataEntryQueue> v = DataEntryQueuePeer.doSelect( c );
    if( v.size() > 0 ) {
        //do something with v
        v.setStatus(DataEntryQueue.STATUS_KEYING_COMPLETE);
        v.setModified(true);
        v.save();
    }
}

すべての「doSelect」で同じ document_id を持つレコードのみが選択されるように、基準にもう 1 つのフィールド (DataEntryQueuePeer.DOCUMENT_ID) を追加したいと考えています。ただし、特定の DOCUMENT_ID はメソッドに渡されません。

私がまだ十分に明確でない場合はお知らせください...ありがとう。

4

1 に答える 1

0

SQL の形式が正しくありません。正しい質問は、正しい答えを取得する可能性が高くなります。テーブル A と B に名前を付けます。

SELECT * FROM B WHERE B.document_id IN (SELECT DISTINCT A.document_id FROM A)
于 2011-11-24T09:48:18.643 に答える