[英]mysql update sequence into one table depending on another table
以下是2個表格:
類
academic_year_id student_id standard
2 1 10
2 2 10
2 3 10
2 4 10
2 5 10
2 6 10
2 7 11 Science
2 8 11 Science
這里的標准不是INT
學生
student_id roll_no name teacher_approval
1 0 S Sumeet G 1
2 0 Nair Nikhil R 1
3 0 Nayak Ankita R 0
4 0 Rathod Ketan P 0
5 0 Patel Vishal D 1
6 0 Patel Jignesh R 0
7 0 Prajapati Bhavesh A 1
8 0 Shah Harsh N 1
我想做的事:
當老師選擇標准-> 10並按下按鈕“分配卷號”
我希望所有10級標准的學生都沒有按姓名順序獲得名次,並且得到了教師批准的Teacher_approval ='1'
所以我的學生表如下:
學生
student_id roll_no name teacher_approval
1 3 S Sumeet G 1
2 1 Nair Nikhil R 1
3 0 Nayak Ankita R 0
4 0 Rathod Ketan P 0
5 2 Patel Vishal D 1
6 0 Patel Jignesh R 0
7 0 Prajapati Bhavesh A 1
8 0 Shah Harsh N 1
到目前為止,我已經嘗試了以下代碼:
$standard = $_POST['standard']
SET @incr = 0
UPDATE
student AS st
JOIN
( SELECT * FROM
classes AS classes
WHERE standard = '".$standard."'
) AS tmp
ON tmp.student_id = st.id
SET
st.roll_no = @incr:=@incr+1
WHERE st.teacher_approval = '1'
ORDER BY st.name ASC
但這給了我一個錯誤:更新和訂購的使用不正確
有類似經驗的人嗎? 任何幫助,將不勝感激。 謝謝。
在MySql中,使用多個表時,不能直接將ORDER BY
作為UPDATE
一部分(請參閱此鏈接 )。 試試這個代替:
UPDATE student AS table1
INNER JOIN (
SELECT st.student_id, st.roll_no, st.name, st.teacher_approval
FROM student AS st
JOIN (
SELECT * FROM
classes AS cl
WHERE cl.standard = '".$standard."'
) AS tmp
ON tmp.student_id = st.student_id
WHERE st.teacher_approval = '1'
ORDER BY st.name ASC
) AS table2
ON table2.student_id = table1.student_id
SET table1.roll_no = @incr:=@incr+1
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.