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