>  Q&A  >  본문

MySQL 데이터베이스에서 Navicat을 사용하여 여러 ID 값 필터링

<p>id_product를 반복하지 않고 가장 최근의 만료일과 판매 가격을 사용하여 데이터를 필터링해야 하는데, 이 문제를 해결하려고 했지만 올바른 방법을 찾을 수 없습니다</p> <p>Navicat 쿼리 및 결과입니다</p> <pre class="brush:php;toolbar:false;">SELECT product_exp_date.id제품, product_exp_date.exp_date, product_exp_date.판매_가격 에서 제품 내부 조인 product_exp_date 에 product.idproduct = product_exp_date.idproduct 그룹 기준 product_exp_date.exp_date</pre> <pre class="brush:php;toolbar:false;">idproduct exp_date sales_price 8 2022-11-01 300 5 2022-06-08 370 5 2022-06-09 350 7 2022-07-01 380 5 2022-09-20 450 6 2022-10-08 140 6 2023-06-08 150 <p>저는 이런 방법으로 시도해 보았습니다</p> <pre class="brush:php;toolbar:false;">GROUP BY product_exp_date.id제품</pre> <p>하지만 다른 결과가 나왔습니다</p> <pre class="brush:php;toolbar:false;">idproduct exp_date sales_price 5 2022-06-09 350 6 2023-06-08 150 7 2022-07-01 380 8 2022-11-01 300 <p>하지만 이 결과를 얻어야 합니다</p> <pre class="brush:php;toolbar:false;">idproduct exp_date sales_price 5 2022-06-08 370 6 2022-10-08 140 7 2022-07-01 380 8 2022-11-01 300 <p>제품 목록</p> <pre class="brush:php;toolbar:false;">productid product_name 5A 6B 7C 8D</pre> <p>Product_EXP_DateTable</p> <pre class="brush:php;toolbar:false;">idproduct_exp_date idproduct exp_date Selling_price 1 5 2022-06-09 350 2 6 2023-06-08 150 3 5 2022-06-08 370 4 5 2022-09-20 450 5 6 2022-10-08 140 6 7 2022-07-01 380 7 8 2022-11-01 300</pre> <p>가끔 검색어에 오류가 있는 경우가 있습니다. 어쨌든 이 문제를 해결하려면 도움이 필요합니다. 감사해요. </p>
P粉285587590P粉285587590439일 전599

모든 응답(1)나는 대답할 것이다

  • P粉481035232

    P粉4810352322023-08-29 16:08:14

    우선, 이는 Navicat 쿼리가 아니라 MySQL 쿼리라는 점을 정정해 드리겠습니다. 이제 이것은 두 가지 다른 것입니다. MySQL은 데이터베이스이고 Navicat은 도구입니다. MySQL Workbench, PHPMyAdmin 또는 SQLyog와 같은 다른 도구와 유사합니다. 그래픽 인터페이스를 통해 데이터베이스 기능을 수행할 수 있도록 설계되었습니다.

    다음으로 두 가지 쿼리를 제공하겠습니다. MySQL 버전에 따라 그 중 하나를 사용할 수 있습니다. 첫 번째 쿼리는 다음과 같습니다.

    으아악

    모든 버전의 MySQL 또는 MariaDB에서 위 쿼리를 실행할 수 있어야 합니다. 이 쿼리의 아이디어는 idproduct分组获取最小的exp_date,然后将其作为子查询,再次与product表进行连接,以匹配这两个提取的值,以便我们可以提取selling_price를 통해서입니다.

    두 번째 쿼리:

    으아악

    이 쿼리는 창 기능을 지원하는 MySQL v8+ 또는 MariaDB 10.2+(이상)에서만 실행할 수 있습니다. 이전 쿼리와는 아이디어가 약간 다릅니다. 여기서는 특정 조건을 기반으로 ROW_NUMBER(),然后将其作为子查询,并只添加一个WHERE子句。与之前的查询相比,这不需要JOIN 작업을 생성하는 데 중점을 둘 것입니다.

    product 테이블이 원래 쿼리에서 사용되는 것을 보지 못했기 때문에 고려하지 않았다는 것을 알 수 있지만, 함께 조인해야 하는데 어떻게 해야 할지 알 수 없다면, 그냥 메시지를 남기고 제가 무엇을 할 수 있는지 알아보겠습니다.

    데모 바이올린

    회신하다
    0
  • 취소회신하다