【发布时间】:2017-01-11 18:12:59
【问题描述】:
我有一张桌子:
ITEM NOTE RECORD_DATE USER
Apple Blah 2016-12-30 11:22:33 mcmurphy510
Orange Somenote 2016-12-31 11:22:33 user2
Apple BlahBlah 2017-01-01 11:22:33 user2
我正在尝试创建一个显示项目和最新注释的查询。我还需要从 DATE 和 USER 列中导出四个字段:
CREATED: 应该是给定ITEM的最早行的RECORD_DATE时间戳
CREATED_BY:对于给定的ITEM,应该是最早行的USER
UPDATED: 应该是给定ITEM的最近行的RECORD_DATE时间戳
UPDATED_BY:对于给定的ITEM,应该是最近行的USER
使用以下查询,我设法获得了其中一个(最早的或最新的),但不能同时获得:
SELECT
i.item,
i.note,
i.record_date AS created,
i.user AS created_by
FROM
item i
INNER JOIN (
SELECT
item,
MAX(record_date) as record_date
FROM item
GROUP BY item
) i2
ON (
i.item = i2.item AND
i.record_date = i2.record_date
)
使用它,我可以通过在子查询中的MAX() 和MIN() 之间切换来在返回最早和最近的RECORD_DATE 之间切换。
我的问题是如何创建一个可以在同一行中同时显示最早和最新结果的信号查询?
期望的结果:
ITEM NOTE CREATED CREATED_BY UPDATED UPDATED_BY
Apple BlahBlah 2016-12-30 11:22:33 mcmurphy510 2017-01-01 11:22:33 user2
Orange Somenote 2016-12-31 11:22:33 user2 NULL NULL
我在这里有一个小提琴: http://sqlfiddle.com/#!9/cd724a/3
【问题讨论】:
-
为什么橙色行不会出现两次?毕竟两者都是是!!