[英]MYSQL - Select multiple rows in one query
claimId is foreign key 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;
}
My query gives me only one column which is highest id. 我的查询只给我一列ID最高的列。
But I am trying to get only 'Open' from 'chaseStatus' for each 'claimId' (with highest id) like; 但是我正在尝试从每个人的“ claimId”(具有最高ID)中的“ chaseStatus”中仅获取“ Open”;
How can I get like this 我怎么会这样
for id = 5 : CL001 对于ID = 5:CL001
AND 和
for id = 6 : CL003 对于ID = 6:CL003
Any ideas? 有任何想法吗?
You can retrieve the highest id of the claimid using group by. 您可以使用group by来检索Claimid的最高ID。
$query = "SELECT max(Id) as Id,claimId FROM statusTable ";
$query .= "WHERE (`chaseStatus` = 'Open') ";
$query .= "GROUP BY claimId";
THis should result in the following table 这应显示在下表中
Id claimId
5 CL001
6 CL003
Here's a SQL Fiddle: http://sqlfiddle.com/#!2/b000e/1 这是一个SQL提琴: http ://sqlfiddle.com/#!2/b000e/1
You can do what you want by including the 'Open'
condition in the subquery: 您可以通过在子查询中包含'Open'
条件来执行所需的操作:
SELECT *
FROM statusTable
WHERE `chaseStatus` = 'Open' AND
id IN (SELECT MAX(id) FROM statusTable WHERE chaseStatus = 'Open' GROUP By ClaimId);
I think it is redundant to have the open
condition in the outer query, so this should work for you: 我认为在外部查询中具有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.