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'