2013-03-04 114 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

我做了它使用之間的時間戳之間,它似乎是唯一明智的方式來做到這一點。