自从过去8小时以来,我一直在努力解决这个问题!以下是我想要实现的目标。如果你可以指导我或纠正我下面遗漏的内容,那就太好了。
A, B, C, Date
--------------
1 2 3 1
2 3 2 2
3 2 4 3
4 2 9 4
5 3 4 5
6 4 9 6
7 4 3 7
我的查询:
SELECT * 来自Tbl 其中B = 2或C = 2 GROUP BY B,C 按日期排序DESC
此查询为我提供了重复值。我想看到的是,如果B = 2或C = 2,我只想要B = 2或C = 2只有1行,并且还要将两个结果行过滤到最后一行。过滤应按日期栏进行。
A, B, C, Date (Query output!)
--------------
1 2 3 1
2 3 2 2
3 2 4 3
4 2 9 4
预期产出:
A, B, C, Date (Expected output!)
--------------
1 2 3 1 (skip this row, because the next row is the latest row! and it contains 2)
2 3 2 2 (show this row for B=2 or C=2 instead of the above row)
3 2 4 3
4 2 9 4
提前致谢!
答案 0 :(得分:0)
这是一种方式......
SELECT m.*
FROM my_table m
JOIN
( SELECT B
, C
, MAX(Date) max_date
FROM
( SELECT B,C,Date FROM my_table WHERE B = 2
UNION
SELECT C,B,Date FROM my_table WHERE C = 2
) x
GROUP
BY B
, C
) n
ON ((n.b=m.b AND n.c=m.c) OR (n.b=m.c AND n.c=m.b))
AND n.max_date = m.date;