2013-03-04 133 views
0

我正在努力寻找正确的答案,环顾网络如何做到这一点,我有一个加入和一个组。当我添加一个限制到最后它限制组而不是实际结果。限制结果,而不是组结果

SELECT COUNT(*) AS `numrows`, `people`.`age` 
FROM (`events`) 
JOIN `people` 
ON `events`.`id` = `people`.`id` 
WHERE `people`.`priority` = '1' 
GROUP BY `people`.`age` 
ORDER BY `numrows` 
LIMIT 150 

限总是变化所以这需要是动态的,这个想法是从两个表错过行的第一150或x量,但不是以限制的组。

编辑=我想我已经解释了这个不好,我实际上想从150行或x开始,限制是我知道动态执行此操作的唯一方法。所以这个想法是,如果最后一次搜索检索150行,然后让下一次有250个结果,但我想忽略上次发现的前150个。希望这更好理解。

有限制或从需要在连接的WHERE之后开始,我认为这是唯一可行的地方。

编辑SQL =

SELECT COUNT(*) AS `numrows`, `people`.`age` 
FROM (
SELECT `id`, `events`.`pid` 
FROM `events` 
ORDER BY `id` 
LIMIT 1050 
)limited 
JOIN `people` ON `people`.`age` = limited.id 
WHERE `people`.`priority` = '1' 
GROUP BY `people`.`age` 
ORDER BY `numrows` DESC 

感谢您的帮助

+1

不是我理解你的问题 – 2013-03-04 20:30:45

+0

你想完成什么? SQL格式良好,可以检索150行输出集。 – 2013-03-04 20:31:43

+0

极限150,300 – Hackerman 2013-03-04 20:34:54

回答

1

我怀疑你的意思是这样?

SELECT COUNT(*) AS numrows, people.age 
FROM (
SELECT id FROM events ORDER BY id LIMIT 150 
) limited 
JOIN people ON people.id = limited.id 
GROUP BY people.age 
ORDER BY numrows; 
+0

好吧,这几乎奏效,但因为我解释得很糟糕,它没有做我想做的事情,它确实限制了事件表,但它错过了结果,因为我错过了where子句哪些变化,请看上面的 – 2013-03-05 08:51:40

+0

'LIMIT 150,999999999'? – Wrikken 2013-03-05 12:26:31

0

我做了它使用之间的时间戳之间,它似乎是唯一明智的方式来做到这一点。