[英]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.