Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从下面的条目中获得唯一的结果?_Php_Mysql - Fatal编程技术网

Php 如何从下面的条目中获得唯一的结果?

Php 如何从下面的条目中获得唯一的结果?,php,mysql,Php,Mysql,在上面这一排,我期待着这样 如果行具有相同的elementclass,则在该条件下,表\u no但不同的ress\u id仅取非零的行。如果在上述条件下,两行具有0,则可以取任意一行。如果两行都具有非零,则也可以取任意一行。 现在 对于其他人,它可以采用0的值。我们可以使用group by来计划id,因为可能有多个计划 期望结果 plan_id | elementclass | table_no | ress_id | UserID | Status 1 | el

在上面这一排,我期待着这样 如果行具有相同的elementclass,则在该条件下,表\u no但不同的ress\u id仅取非零的行。如果在上述条件下,两行具有0,则可以取任意一行。如果两行都具有非零,则也可以取任意一行。 现在 对于其他人,它可以采用0的值。我们可以使用group by来计划id,因为可能有多个计划

期望结果

plan_id | elementclass     | table_no   | ress_id | UserID     | Status
    1   | elementclass1    |          1 |   0     | 0006100022 |      N    
    1   | elementclass1    |          1 |   2     | 0006100022 |      N    
    1   | elementclass2    |          2 |   0     | 0006100021 |      N
    1   | elementclass4    |          3 |   0     | 0006100023 |      N 
请帮忙

谢谢

试试这个:

plan_id | elementclass     | table_no   | ress_id | UserID     | Status   
1   | elementclass1    |          1 |   2     | 0006100022 |      N    
1   | elementclass2    |          2 |   0     | 0006100021 |      N
1   | elementclass4    |          3 |   0     | 0006100023 |      N
说明:

这里,我们为每个elementclass和table_no创建一个临时表T2,其最大值为ress_id。然后,我们用这3个字段将该表与原始表连接起来,并从原始表T1中选择所有记录

结果:

SELECT T1.* 
FROM TableName T1 JOIN
 (SELECT elementclass,table_no,MAX(ress_id) as ress_id
  FROM TableName
  GROUP BY elementclass,table_no
 )T2 ON T1.elementclass=T2.elementclass AND T1.table_no=T2.table_no AND T1.ress_id=T2.ress_id
请参阅中的结果

这将为您提供:

  • 每个平面图和表号1个结果

  • 每个结果都有最大的ress_id


首先获取每个元素类别的最大ress id。然后选择相关记录。可能有重复的。因此,按元素类别和ress id分组

下面的陈述并不能完全满足您的要求,但可能已经足够了。在平局的情况下,您不会得到一条记录,而是一条记录的计划ID、一条记录的表号、一条记录的用户ID和一条记录的状态。因此,当elementclass和ress_id相等时,可以从一个记录获取用户id,从另一个记录获取状态

SELECT * FROM  TableName a  
WHERE a.ress_id = (SELECT MAX(b.ress_id) FROM TableName b WHERE b.table_no = a.table_no) 
GROUP BY a.plan_id,a.table_no

(在出现关系的情况下,可以编写一条语句来访问完整的记录,但这要复杂得多——至少在MySQL中是这样。)

您应该用所需的结果编辑问题。你的解释很难理解。嗨,我已经更新了,请现在查看
SELECT * FROM  TableName a  
WHERE a.ress_id = (SELECT MAX(b.ress_id) FROM TableName b WHERE b.table_no = a.table_no) 
GROUP BY a.plan_id,a.table_no
select plan_id, mytable.elementclass, table_no, mytable.ress_id, userid, status
from mytable
join
(
  select elementclass, max(ress_id) as max_ress_id
  from mytable
  group by elementclass
) agg on agg.elementclass = mytable.elementclass and agg.max_ress_id = mytable.res_id
group by mytable.elementclass, mytable.ress_id;