2013-05-07 93 views
0

鉴于下面的查询,我可以得到一个结果集,其中包含来自查询中列出的位置ID的所有新故事并按日期排序。我不明白的是如何重写查询,以便将其限制为来自每个位置ID的1个结果(最新)。SQL查询,每个特定列限制为1个结果

是否可以做到这一点,或者我应该在事后处理结果集?

由于提前,

SELECT node.title AS node_title, node.nid AS nid, node.created AS node_created 
FROM 
{node} node 
INNER JOIN {field_data_field_story_location} field_data_field_story_location 
ON node.nid = field_data_field_story_location.entity_id 
AND (field_data_field_story_location.entity_type = 'node' 
WHERE (((node.status = '1') AND (node.type IN ('_news_story')) 
AND (field_data_field_story_location.field_story_location_tid IN 
('38', '44', '46', '45', '30', '36', '37', '29', '33', '34', '28', '56', '21', '49', '32')))) 
ORDER BY node_created DESC 
+1

这是一个group_wise最大查询连接的结果集。它每天都会被问到几次,每天都在SO和其他地方。如果您需要特定帮助,请考虑以一组CREATE和INSERT语句和/或SQLFIDDLE的形式提供示例数据集。 – Strawberry 2013-05-07 13:33:05

+0

嗨,感谢您的建议 - 我真的不知道太多的SQL,所以我一直在寻找术语(groupwise)和任何东西,所以我可以更有效地搜索。 – rix 2013-05-07 16:30:06

回答

2

您可以处理结果后确定,但它不是在大数据量的情况下,有效的。

更有效率,你可以写N次查询(每个field_story_location_tid)与限制1,然后使用UNION sintax