2
我有一张gr_no,year_dob,family_id等的表。 我想根据family_id排名出生年份,并且无法生成siblings_rank结果。如何根据出生组别和出生年份获得排名
+----------+--------------+-----------+
| gr_no | year_dob | family_id | siblings_rank
+----------+--------------+-----------+
| 1001 | 1992 | 95 | 1
| 10234 | 1995 | 95 | 2
| 10236 | 2004 | 96 | 1
| 15568 | 2006 | 96 | 2
| 1225 | 2004 | 92 | 1
+----------+--------------+-----------+
此查询工作:
SET @prev := null;
SET @cnt := 1;
SELECT gr_no, gs_id, gf_id, year_dob, IF(@prev <> gf_id, @cnt := 1, @cnt := @cnt + 1) AS siblings_position, @prev := gf_id as previous_gf_id
FROM student_registered
ORDER BY gf_id, year_dob asc
该查询也在努力:
SELECT gr_no, gs_id, gf_id, year_dob, IF(@prev <> gf_id, @cnt := 1, @cnt := @cnt + 1) AS siblings_position, @prev := gf_id as previous_gf_id
FROM student_registered
JOIN (SELECT @prev := null) p
JOIN (SELECT @cnt := 1) c
ORDER BY gf_id, year_dob asc
...............我不能用这些查询创建视图?
或 如果一个过程可以根据查询更新student_registered列'siblings_position'?
共记录6019和此查询SELECT gr_no,gs_id得到同样的结果,year_dob, gf_id, (SELECT COUNT(*)FROM T1 student_registered其中 = T1.gf_id T.gf_id 和T1.year_dob <= T.year_dob)作为siblings_position FROM student_registeredŤ ORDER BY gf_id,year_dob ASC为返回25个结果 – 2014-11-25 05:00:09
@atif Naseem,子查询不会限制行,位置可能会像25一样,你能证实吗?试一下子查询,看看? – radar 2014-11-25 13:03:58
@AtifNaseem,它工作? – radar 2014-12-01 03:40:57