简体   繁体   English

MYSQL-在一个查询中选择多行

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM