2
獲得排X號從question我早些時候提出的後續行動,我做了下面的查詢,但它不能限制某些行的數量從每個組,集團的網頁,並從每個組
SELECT *
FROM (SELECT p.page_id AS page_id,
p.page_url AS page_url,
SUBSTRING(p.page_title,LOCATE('{',p.page_title),LOCATE('}',p.page_title)) AS group_title,
p.page_created AS page_created,
@row_number := @row_number + 1 AS row_number
FROM root_pages AS p
WHERE p.parent_id = '8'
AND p.page_id != '8'
AND p.page_hide != '1'
AND p.category_id = '1'
ORDER BY p.page_backdate DESC) a
WHERE row_number <= 2
結果,
page_id page_url group_title page_created row_number
----------------------------------------------------------
44 abc {a} 2011-10-21... NULL
43 def {a} 2011-10-21... NULL
42 qwe {b} 2011-10-21... NULL
41 rty {b} 2011-10-21... NULL
40 tyu {c} 2011-10-21... NULL
39 ghj {c} 2011-10-21... NULL
59 sss {c} 2011-10-21... NULL
但我希望得到這個結果,
結果,
page_id page_url group_title page_created row_number
----------------------------------------------------------
44 abc {a} 2011-10-21... 1
43 def {a} 2011-10-21... 2
42 qwe {b} 2011-10-21... 1
41 rty {b} 2011-10-21... 2
40 tyu {c} 2011-10-21... 1
39 ghj {c} 2011-10-21... 2
任何想法,我已經錯過了?
EDIT 1:
查詢,
SELECT a.*
FROM (SELECT p.page_id,
p.page_url,
SUBSTRING(p.page_title, LOCATE('{',p.page_title),LOCATE('}', p.page_title)) AS group_title,
p.page_created,
@row_number := @row_number + 1 AS row_number
FROM root_pages AS p
JOIN (SELECT @row_number := 0, @url) r -- Initialize the variable
WHERE p.parent_id = '8'
AND p.page_id != '8'
AND p.page_hide != '1'
AND p.category_id = '1'
ORDER BY p.page_backdate DESC) a
結果,
page_id page_url group_title page_created row_number
----------------------------------------------------------
44 abc {a} 2011-10-21... 1
43 def {a} 2011-10-21... 2
42 qwe {b} 2011-10-21... 3
41 rty {b} 2011-10-21... 4
40 tyu {c} 2011-10-21... 5
39 ghj {c} 2011-10-21... 6
59 sss {c} 2011-10-21... 7
查詢,
SELECT a.*
FROM (SELECT p.page_id,
p.page_url,
SUBSTRING(p.page_title, LOCATE('{',p.page_title),LOCATE('}', p.page_title)) AS group_title,
p.page_created,
@row_number := @row_number + 1 AS row_number
FROM root_pages AS p
JOIN (SELECT @row_number := 0, @url) r -- Initialize the variable
WHERE p.parent_id = '8'
AND p.page_id != '8'
AND p.page_hide != '1'
AND p.category_id = '1'
ORDER BY p.page_backdate DESC) a
WHERE a.row_number <= 2
結果,
page_id page_url group_title page_created row_number
----------------------------------------------------------
44 abc {a} 2011-10-21... 1
43 def {a} 2011-10-21... 2
查詢,
SELECT *
FROM(
SELECT
p.page_id AS page_id,
p.page_url AS page_url,
SUBSTRING(p.page_title,LOCATE('{',p.page_title),LOCATE('}',p.page_title)) AS group_title,
p.page_created AS page_created,
@url = p.page_url,
@row_number := CASE
WHEN p.page_url = @url THEN @row_number + 1
ELSE 1
END AS row_number
FROM root_pages AS p
JOIN (SELECT @row_number := 0, @url) r -- Initialize the variable
WHERE p.parent_id = '8'
AND p.page_id != '8'
AND p.page_hide != '1'
AND p.category_id = '1'
ORDER BY p.page_backdate DESC
) a
where row_number <= 2
結果,
page_id page_url group_title page_created row_number
----------------------------------------------------------
44 abc {a} 2011-10-21... 1
43 def {a} 2011-10-21... 1
42 qwe {b} 2011-10-21... 1
41 rty {b} 2011-10-21... 1
40 tyu {c} 2011-10-21... 1
39 ghj {c} 2011-10-21... 1
59 sss {c} 2011-10-21... 1
編輯2:
查詢,
SELECT
a.*,
@r := CASE WHEN @g = a.group_title THEN @r+1 ELSE 1 END AS r,
@g := a.group_title AS dummy
FROM(
SELECT
p.page_id AS page_id,
p.page_url AS page_url,
SUBSTRING(p.page_title,LOCATE('{',p.page_title),LOCATE('}',p.page_title)) AS group_title,
p.page_created AS page_created
FROM root_pages AS p
WHERE p.parent_id = '8'
AND p.page_id != '8'
AND p.page_hide != '1'
AND p.category_id = '1'
ORDER BY p.page_backdate DESC
) a
JOIN (SELECT @r := 0, @g) r -- Initialize the variable
結果,
page_id page_url group_title page_created dummy row_number
44 abc {a} 2011-10-21... {a} 1
43 def {a} 2011-10-21... {a} 1
42 qwe {b} 2011-10-21... {b} 1
41 rty {b} 2011-10-21... {b} 1
40 tyu {c} 2011-10-21... {c} 1
39 ghj {c} 2011-10-21... {c} 1
59 sss {c} 2011-10-21... {c} 1
答:
SELECT *
FROM
(
SELECT
a.*,
@r := CASE WHEN @g = a.group_title THEN @r+1 ELSE 1 END AS r,
@g := a.group_title AS dummy
FROM(
SELECT
p.page_id AS page_id,
p.page_url AS page_url,
SUBSTRING(p.page_title,LOCATE('{',p.page_title),LOCATE('}',p.page_title)) AS group_title,
p.page_created AS page_created
FROM root_pages AS p
WHERE p.parent_id = '8'
AND p.page_id != '8'
AND p.page_hide != '1'
AND p.category_id = '1'
ORDER BY p.page_backdate DESC
) a
JOIN (SELECT @g:=null, @r:= 0) n -- Initialize the variable
) b
WHERE r <= 2
謝謝。第一個查詢顯示行號,但第二個查詢不顯示行號。但是,第一個查詢仍然不會返回我之後的查詢,因爲行號是 - '1,2,3,4,5,6,7'請參閱上面的我的編輯。 – laukok
@lauthiamkok:啊,你想要'group_title'上的排名。必須跑步去工作,但你應該有足夠的工作,直到我下班回家。 –
我試過了,但是我在編號行中得到了'1,1,1,1,1,1,1'請看我上面的編輯。謝謝。 – laukok