max(date),带有内部连接和where子句

ekqde3dh  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(414)

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

下面是我写的两个最接近的sql语句(错误)
这将返回所有与status: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美国德克萨斯州约翰
k02美国俄亥俄州尼尔市
k03美国俄亥俄州萨利
k04美国俄亥俄州西蒙
k05美国德克萨斯州詹姆斯
k06美国德克萨斯州詹姆斯
k07美国德克萨斯州约翰
id状态somea someb somec日期(时间戳)
k01活动我只是随机21-09-2018 19:22:33 pm
k02非活动放一些字2018年9月22日下午16:22:33
k03于2018年9月22日下午19:22:33在此激活
k04未知假人示例输出22-09-2018 19:22:33 pm
k05非活动x s v 2018年9月23日下午19:22:33
k06未知希望我解释2018年9月23日下午19:22:33
k07未知我的问题好2018年9月24日下午19:22:33
上面的数据是制表符分隔的,如果无法导入excel,请告诉我。
欢迎编辑我的句子,我可能没有完美的句子来描述我的问题。

ccgok5k5

ccgok5k51#

如果您想要最近的订单,您可以:

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';

相关问题