带有内部连接和where子句的M​​ax(date)

时间:2018-09-24 12:39:28

标签: mysql sql sqlyog

我有2个表,用户和订单。
用户表中的名称和组都形成唯一的组合,因此请注意,在此条目中共有5个唯一的组合。
对于每个独特的组合,我想找到它们各自的最新状态,只关心活动和不活动。
然后,我将忽略活动状态,并输出具有非活动状态的查询。
(但目前,我只查询所有活动/非活动结果,因为我不想让事情变得更困难)

sample 这是我写的两个最接近的sql语句(错误)
这将返回状态为active / inactive

的所有唯一组合
SELECT order.id, order.status, order.someA, order.someB, order.someC, order.date, user.name, user.group, user.site FROM order INNER JOIN user ON user.id = order.id WHERE (status = 'P' OR status = 'F');

对于每个唯一组合,这仅给出活动/无效的第一个条目(应该是最后/最新条目)

SELECT MAX(order.date), order.date, order.id, order.status, order.someA, order.someB, order.someC, user.name, user.group, user.site FROM order INNER JOIN user ON user.id = order.id WHERE site = 'US' AND (status = 'P' OR status = 'F') GROUP BY name, group ORDER BY date;

id名称组网站
K01 John Texas US
K02 Niall美国俄亥俄州
K03莎莉俄亥俄州美国
K04西蒙·俄亥俄州美国
K05 James Texas US
K06詹姆斯·德州(James Texas)美国
K07约翰·德州(美国)

id状态someA someB someC日期(时间戳)
K01活动我只是随机21-09-2018 19:22:33 PM
K02不活动输入了一些内容22-09-2018 16:22:33 PM
K03在这里有效对此活动22-09-2018 19:22:33 PM
K04未知的虚拟示例输出22-09-2018 19:22:33 PM
K05不活动X S V 23-09-2018 19:22:33 PM
K06未知的希望我能解释一下23-09-2018 19:22:33 PM
K07很好地知道了我的问题24-09-2018 19:22:33 PM

以上数据是制表符分隔的,请告知是否无法导入excel。
欢迎编辑我的句子,我可能没有完美的句子来描述我的问题。

1 个答案:

答案 0 :(得分:0)

如果您要最近的订单,可以执行以下操作:

select . . .   -- unclear what columns you really want
from users u join
     orders o
     on u.id = o.id
where (u.name, u.group, o.date) in
       (select u2.name, u2.group, max(o2.date)
        from users u2 join
             orders o2
             on u2.id = o2.id
        group by u2.name, u2.group
       ) and
       o.status <> 'active';