Php 从具有重复项的表中获取记录

Php 从具有重复项的表中获取记录,php,mysql,database,Php,Mysql,Database,我的表格结构如下所示 sr group name status 4 class11 ghanshyam Joined 3 class11 ghanshyam Removed 2 class11 ghanshyam suspended 1 class11 ghanshyam joined 现在我想获取组class11中状态为Removed的所有记录 所以我的问题是 select * from table where group = 'class11'

我的表格结构如下所示

sr  group   name    status
4   class11 ghanshyam   Joined
3   class11 ghanshyam   Removed
2   class11 ghanshyam   suspended
1   class11 ghanshyam   joined
现在我想获取组class11中状态为Removed的所有记录

所以我的问题是

select * from table where group = 'class11' and status='Removed' group by name
但现在ghanshyam在状态移除后重新加入了这个组,我们正在复制条目,所以它不应该计入移除,暂停帐户也是如此


那么如何从表中提取所需的行呢?在所有情况下,您都应该检索记录,如下所示:

select * from table where group = 'class11'
完成此操作后,您可以检查上次状态(如果已删除或已加入)

试试这个:

SELECT t1.* from [table] t1

INNER JOIN

( SELECT MAX(sr) AS nsr ,[group] ,[name] FROM [table] GROUP BY [group] ,[name] ) t2

ON t2.nsr = t1.sr
AND t1.status='Removed'
从表格中选择* 其中group='class11'和status='Removed' 然后从表中选择MAXsr,其中group='class11'和status='Joined' 希望这将帮助您:
如需任何澄清,请添加评论。

尝试此查询,它将获得具有最大id的记录以供删除

检查小提琴:

不,我不能这样做,因为我需要基于sql查询mysql_num_行的总计数,然后我需要使用limitpraveen进行分页,这有点不清楚您到底想要什么。您能解释一下您希望从您的查询中得到什么样的准确响应吗?ghanshyam不应该出现在select*from表中,其中group='class11'和status='Removed'按名称分组查询,他应该只出现在JONED statussr中。sr是该表的主键吗?是的,sr是主键我是否使用了正确的查询,当状态从“已加入”、“已移除”、“已暂停”更改时,这会给出正确的结果???@praveen86 Yeah。。很高兴听到这一点:也可以随意投票表决答案。同样,德赛的回答也将完成这项工作。所以你也要感谢他们的努力
SELECT * FROM tbl_name t WHERE t.sr IN 
  (SELECT max(t1.sr) FROM tbl_name t1 WHERE `group` = 'class11' GROUP BY t1.`name`) 
  AND t.status = 'Removed'