"רענון" טבלה בMYSQL
-
שלום
יש לי טבלא פשוטה עם הרבה מספרי טלפון, נניח אלף מספרים.
עכשיו אני רוצה שהלקוח יוכל להחליף את הרשימת מספרי טלפון לרשימה חדשה, הוא מעלה טבלא ואז אני צריך להחליף את המספרים הישנים בחדשים.אבל יש שלש קבוצות מספרים
- מספרים שהיו בטבלא המקורית ונמצאים גם בחדשה. בזה לא צריך לגעת
- מספרים שהיו במקורית ולא נמצאים בחדשה, אותם צריך למחוק
- מספרים שלא היו במקורית ונמצאים בחדשה, אותם צריך להוסיף
כמובן שהכי קל למחוק את כל הטבלא ולכתוב אותה שוב, אבל אסור שהמספרים של הקבוצה הראשונה לא יופיעו אפילו רגע אחד בטבלא.
חשבתי לעשות פונקציה שתייצר את שלשת המערכים הנ"ל לפי שני הטבלאות (המקורית והחדשה), ואז לעשות INSERT לקבוצה השלישית וDELETE לשניה.
יש אולי פיתרון יותר פשוט? סוג של פונקציה מובנית בMYSQL שאפשר להעלות כל הטבלא החדשה ולהגיד לו להסתדר עם זה?הסיבה שאני מחפש פיתרון אחר ולא מה שכתבתי, זה שיש מצב שיהיה מאה אלף מספרים בטבלא, ואני לא יודע כמה ביצועים זה יאכל מהשרת להפריד את הטבלאות וכו'
תודה -
@שואף
תנסה אולי להוסיף את זה לטבלה אחרת , ואז לעשות משפט INSERT שיכיל בתוכו בWHERE טבלת משנה
משהו בסגנון כזהinsert into tbl1 (tel,camption) select tel,camption from tbl2 where tbl1.tel not in (select tel from tbl2 where tbl2.campion =tbl1.camption)
משהו בסגנון
כתבתי את השאילתא מהזיכרון ולכן היא לא מושלמת
זה להוספה
למחיקה אתה יכול למחוק באותה השיטה אבל הפוךdelete tbl1 (tel,camption) where tbl1.tel not in (select tel from tbl2 where tbl2.campion =tbl1.camption)
המחיקה צריכה להיות לפני ההוספה
-
צריך שיהיה עמודה אחת שהשם שלה למשל batch שזה יהיה מס' או מזהה פעולה.
בכל הכנסה של מספר יש להכניס מס' אחיד לכלל המספרים שנכנסו יחד איתו בעמודה batch.
כעת הבעיה נפתרת:-
מבצעים הכנסה של כלל המספרים החדשים
ביחס למספרים שכבר היו זה שתי אפשרויות:
א. המספר טלפון הוא מפתח ראשי, במידה כזו אפשר ע"י ON DUPLICATE KEY UPDATE... לעדכן את הbatch בערך הנוכחי
ב. המספר אינו מפתח ראשי, גם זה מחולק ל2 האם אכפת שיהיה שניים למשך כמה שניות, אם כן אז מצויין שייכנס בינתיים. אם אסור שיהיה כפול, פה כבר צריךIF בשאילתה שמעדכן או מוסיף. -
מוחקים את כלל השורות שהbatch שלהם שונה מהאחרון
-