簡體   English   中英

MYSQL-在一個查詢中選擇多行

[英]MYSQL - Select multiple rows in one query

ClaimId是外鍵

Table  (statusTable)
Id_          _chaseStatus_       _claimId_
1               Open               CL001
2               Close              CL002    
3               Open               CL001
4               Open               CL003
5               Open               CL001
6               Open               CL003



$query =    "SELECT * FROM statusTable ";
$query .=   "WHERE (`chaseStatus` = 'Open') ";
$query .=   "AND (id = (SELECT MAX(id) FROM statusTable))";





while($row = mysqli_fetch_assoc($result)){      
        $items[] = $row;
    }

    //$items = array_reverse($items ,true);

    foreach($items as $item){
      $claimId  = $item["claimId"];
      echo $claimId;
    }

我的查詢只給我一列ID最高的列。

但是我正在嘗試從每個人的“ claimId”(具有最高ID)中的“ chaseStatus”中僅獲取“ Open”;

我怎么會這樣

對於ID = 5:CL001

對於ID = 6:CL003

有任何想法嗎?

您可以使用group by來檢索Claimid的最高ID。

$query =    "SELECT max(Id) as Id,claimId FROM statusTable ";
$query .=   "WHERE (`chaseStatus` = 'Open') ";
$query .=   "GROUP BY claimId";

這應顯示在下表中

Id  claimId
5   CL001
6   CL003

這是一個SQL提琴: http ://sqlfiddle.com/#!2/b000e/1

您可以通過在子查詢中包含'Open'條件來執行所需的操作:

SELECT *
FROM statusTable
WHERE `chaseStatus` = 'Open' AND
      id IN (SELECT MAX(id) FROM statusTable WHERE chaseStatus = 'Open' GROUP By ClaimId);

我認為在外部查詢中具有open條件是多余的,因此這應該對您有用:

SELECT *
FROM statusTable
WHERE id IN (SELECT MAX(id) FROM statusTable WHERE chaseStatus = 'Open' GROUP BY ClaimId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM