Mysql

從表中獲取 id(主鍵),其中 id 在表中不可用的範圍內

  • September 12, 2018

我已經table命名了Student。它的主鍵student_idauto incrementand not null

現在Student包含大約 5000 條記錄。

從大學畢業後,我們還需要從Student相關的子表中刪除特定的學生記錄。

它運作良好。

我需要得到那些不在student_id範圍內的數字。

例如。

我有 5000 條記錄。所以假設範圍是1-5000。在Student表中,可能有帶有主鍵的數據:

student_id:

1 2 4 5 6 7 9 12 15 等…

所以我想要刪除的 id,比如:3、8、10、11、13、14 等……並且需要在一些文本文件中得到這個結果。

最後我有兩個問題:

  • 需要查詢以獲取那些已刪除的 ID
  • 我可以在觸發查詢後將結果導出到某個文件中嗎?
SELECT n
FROM (
       SELECT 1000*n1+100*n2+10*n3+n4+1 n
       FROM 
               (
               SELECT 0 n1 UNION 
               SELECT 1 UNION 
               SELECT 2 UNION 
               SELECT 3 UNION 
               SELECT 4 UNION 
               SELECT 5 UNION 
               SELECT 6 UNION 
               SELECT 7 UNION 
               SELECT 8 UNION 
               SELECT 9 
               ) n1,
               (
               SELECT 0 n2 UNION 
               SELECT 1 UNION 
               SELECT 2 UNION 
               SELECT 3 UNION 
               SELECT 4 UNION 
               SELECT 5 UNION 
               SELECT 6 UNION 
               SELECT 7 UNION 
               SELECT 8 UNION 
               SELECT 9
               ) n2,
               (
               SELECT 0 n3 UNION 
               SELECT 1 UNION 
               SELECT 2 UNION 
               SELECT 3 UNION 
               SELECT 4 UNION 
               SELECT 5 UNION 
               SELECT 6 UNION 
               SELECT 7 UNION 
               SELECT 8 UNION 
               SELECT 9
               ) n3,
               (
               SELECT 0 n4 UNION 
               SELECT 1 UNION 
               SELECT 2 UNION 
               SELECT 3 UNION 
               SELECT 4 UNION 
               SELECT 5 UNION 
               SELECT 6 UNION 
               SELECT 7 UNION 
               SELECT 8 UNION 
               SELECT 9
               ) n4
       HAVING n < (
                   SELECT MAX(student_id)
                   FROM Student
                  )
    ) numbers
LEFT JOIN Student ON student_id = n
WHERE student_id IS NULL

小提琴

引用自:https://dba.stackexchange.com/questions/217370