열이 가장 높은 값을 가지고 있고 다른 열이 laravel 쿼리 작성기에서 특정 값을 갖는 행을 가져 오는 방법

newLearner
╔════╦═══════╦═══════╦═══════╗
║ id ║ Col A ║ Col B ║ Col C ║
╠════╬═══════╬═══════╬═══════╣
║ 1  ║ 36    ║ 50    ║ AAA   ║
║ 2  ║ 36    ║ 50    ║ BBB   ║
║ 3  ║ 36    ║ 44    ║ CCC   ║
║ 4  ║ 36    ║ 44    ║ DDD   ║
║ 5  ║ 56    ║ 33    ║ EEE   ║
║ 6  ║ 56    ║ 78    ║ FFF   ║
╚════╩═══════╩═══════╩═══════╝

laravel 쿼리 작성기를 사용하여 'Col B'에서 가장 높은 숫자와 동일한 값 'Col A'에서 테이블 행을 얻는 방법은 무엇입니까?

결국 다음과 같은 결과를 얻고 싶습니다.

╔════╦═══════╦═══════╦═══════╗
║ id ║ Col A ║ Col B ║ Col C ║
╠════╬═══════╬═══════╬═══════╣
║ 1  ║ 36    ║ 50    ║ AAA   ║
║ 2  ║ 36    ║ 50    ║ BBB   ║
║ 6  ║ 56    ║ 78    ║ FFF   ║
╚════╩═══════╩═══════╩═══════╝

이 행을 얻는 이유는 'Col A'에 두 개의 숫자 36과 56이 있기 때문입니다. 'Col B'에서 가장 높은 숫자는 36의 경우 50이고 'Col B'의 가장 높은 숫자는 56의 경우 78입니다.

Sssurii

요구 사항을 충족하기위한 SQL 쿼리는 다음과 같습니다.

SELECT * FROM `test` WHERE col_b in (SELECT MAX(col_b) from test GROUP BY col_a);

고려 test테이블 이름으로, col_a그리고 col_b골 A와 골 B로 각각.

아래는 위 쿼리의 Laravel 쿼리 빌더 버전입니다.

Test::select('*')
        ->whereIn('col_b', function($query)
        {
           $query->from('test')->select(DB::raw("MAX(col_b)"))->groupBy('col_a');
        })->get();

그것이 당신을 위해 작동하기를 바랍니다. :)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관