Выберите группу записей за раз, основываясь на том, что они имеют одинаковое значение в определенном столбце

Я хочу иметь возможность использовать один запрос, чтобы выбрать все записи из таблицы, имеющие одинаковое значение в определенном столбце.

осветление

Условия: - document_id не является первичным ключом.

Идентификаторы списка = SELECT DISTINCT T.document_id ОТ таблицы T;

Блок списка = SELECT * из таблицы, где document_id = ids.next();

  • выполнить операцию на блоке, затем извлечь следующий блок

Может ли кто-нибудь сказать мне, как преобразовать эти два запроса в один запрос?

ОБНОВИТЬ

@Marco @StephanB очень жаль, что мой вопрос был настолько смелым... я должен научиться быть более конкретным...

Во всяком случае, я использую JAVA и Apache Turbine с Torque. Вот код, который я хочу изменить:

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 ответ

Ваш SQL искажен. Правильный вопрос, скорее всего, получить правильный ответ. Я назову ваши таблицы А и Б.

SELECT * FROM B WHERE B.document_id IN (SELECT DISTINCT A.document_id FROM A)
Другие вопросы по тегам