表:
UserId, Value, Date.
Run Code Online (Sandbox Code Playgroud)
我想得到UserId,每个UserId的max(Date)值.也就是说,具有最新日期的每个UserId的值.有没有办法在SQL中执行此操作?(最好是Oracle)
更新:对任何含糊不清的道歉:我需要获取所有UserIds.但对于每个UserId,只有该用户具有最新日期的那一行.
我试图从具有每个不同candidate_id的最新日期的行返回数据.它正确地返回最近的日期(created_unix列),但不返回相应行的其余数据.
SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid
FROM messages
WHERE employer_id='$employerid' AND last='company'
GROUP BY candidate_id
Run Code Online (Sandbox Code Playgroud) 我有一张桌子,里面摆满了不同来源的物品.一些来源可能具有相同的位置(在我的示例中,不同的BBC新闻源将是不同的来源,但它们都来自BBC).每个项目都有一个"唯一"ID,可用于从同一位置识别它.这意味着与网站上相同新闻报道相关但在不同Feed下发布的项目将具有相同的"唯一ID",但这不一定是全球唯一的.
问题是我希望在显示时删除重复项,以便(根据您看到的哪些Feed)您最多只能获得每个故事的一个版本,即使您的两个或三个Feed可能包含指向它的链接.
我有一个sources
表格,其中包含有关每个来源location_id
和location_precedence
字段的信息.然后,我有一个items
包含每个项目,它的表unique_id
,source_id
和content
.具有相同unique_id
和来源的项目location_id
最多应出现一次,最高来源location_precedence
获胜.
我原以为是这样的:
SELECT `sources`.`name` AS `source`,
`items`.`content`,
`items`.`published`
FROM `items` INNER JOIN `sources`
ON `items`.`source_id` = `sources`.`id` AND `sources`.`active` = 1
GROUP BY `items`.`unique_id`, `sources`.`location_id`
ORDER BY `sources`.`location_priority` DESC
Run Code Online (Sandbox Code Playgroud)
会做的伎俩,但似乎忽略了位置优先级字段.我错过了什么?
示例数据:
CREATE TABLE IF NOT EXISTS `sources` (
`id` int(10) unsigned NOT NULL auto_increment,
`location_id` int(10) unsigned NOT NULL,
`location_priority` int(11) NOT NULL,
`active` tinyint(1) unsigned NOT NULL …
Run Code Online (Sandbox Code Playgroud)