2

id各inWHERE句ごとに結果を制限するにはどうすればよいですか? 私のクエリは次のとおりです。

SELECT name 
FROM location_areas 
WHERE parent IN ("1,2,3") 
ORDER BY popularity,name    

親は一意ではありません。

id内の親ごとに 10 個の結果を取得する必要があります。WHERE

たとえば、テーブル構造は次のとおりです。

id   name   parent
1    name    0
2    name    1
3    name    1
4    name    80
5    name    80
6    name    80
7    name    80
8    name    1
4

2 に答える 2

2

これを試して:

SELECT
   T.name,
   T.popularity,
   T.parent,
   T.rank
FROM
(
SELECT
   L.name,
   L.popularity,
   L.parent,
   @rank := IF(@parent = parent, @rank + 1, 1) rank,
   @parent := parent
FROM location_areas L,
(SELECT @rank := 1, @parent := NULL) R
) T
WHERE T.rank <= 10

編集

SELECT T.name, T.popularity, T.parent, T.level, T.rank
FROM (
         SELECT L.name, L.popularity,
             L.parent, L.level,
             @rank := IF(@parent = parent, @rank + 1, 1) rank,
             @parent := parent
         FROM location_areas L,
             (SELECT @rank := 1, @parent := NULL) R
         WHERE L.parent IN (".$ids.")
     ) T WHERE T.rank <= 10;
于 2013-01-14T08:22:07.880 に答える
0

あなたは単にこれを嘘をつくことができます

SET @level = 0;
SET @group = '';

SELECT 
    name
FROM (
    SELECT 
        name ,
        parent
        @level := IF(@group = parent, @level+1, 1) AS level, 
        @group := parent as EGroup 
    FROM test
    WHERE parent IN ("1,2,3") 
    ORDER BY parent 
) rs
WHERE level < 11 
于 2013-01-14T09:30:52.397 に答える