根据特定列中具有相同值的记录一次选择一组记录

时间:2011-11-24 09:29:53

标签: java mysql apache-torque

我希望能够使用单个查询从特定列中具有相同值的表中选择所有记录。

澄清

条件:      - document_id不是主键。

List ids = SELECT DISTINCT T.document_id FROM table T;

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

  • 对块执行操作,然后检索下一个块

有人可以告诉我如何将这两个查询转换为单个查询吗?

更新

@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();
    }
}

我想在条件中再添加一个字段(DataEntryQueuePeer.DOCUMENT_ID),以便在每个“doSelect”上只选择具有相同document_id的记录。但是,没有特定的DOCUMENT_ID传递给该方法。

如果我还不够清楚,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:0)

您的SQL格式错误。正确的问题更有可能找回正确的答案。我将你的桌子命名为A和B.

SELECT * FROM B WHERE B.document_id IN (SELECT DISTINCT A.document_id FROM A)