簡體   English   中英

mysql更新序列到一個表,取決於另一個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM