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 行を逃すことです。

EDIT = 私はこれをひどく説明したと思います。実際には 150 行または x から開始したいのですが、これを動的に実行する唯一の方法は limit です。したがって、最後の検索で 150 行が取得された場合、次回は 250 件の結果があるとしましょうが、前回見つかった最初の 150 件は無視したいとします。

結合の WHERE の後に limit または start from が必要です。それが機能する唯一の場所だと思います。

編集 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

ご協力いただきありがとうございます

4

2 に答える 2

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;
于 2013-03-04T20:40:47.543 に答える
0

タイムスタンプのどこを使用してそれを実行しましたが、それを実行する唯一の賢明な方法のようです。

于 2013-03-05T10:36:04.770 に答える