עדכון בטבלה את השורה שעמודת התאריך שלה הכי נמוכה ,איך ?
יש לי טבלת צפיות (מכילה נתונים על צפיות של משתמשים רשומים באתר בדפים של משתמשים אחרים) שמכילה את העמודות הבאות
idvisit - ID של ביקור
yuser - קוד של משתמש שצפו לו בדף
whouser - קוד של משתמש שצפה בדף
date - תאריך צפייה
מה שאני רוצה לעשות זה , שאם כמות הצפיות למשתמש מסויים גדולה או שווה ל 10
אני מעדכן את השורה שבה התאריך הוא הכי ישן
(את הקטע של הבדיקה אם כמות הצפיות גדולה שווה ל 10 עשיתי באמצעות שאילתת count)
חסר לי רק הקטע של העדכון של השורה הכי ישנה
בתגובה להודעה מספר 2 שנכתבה על ידי DCD שמתחילה ב "מהו מסד הנתונים שלך?
במקרה..."
התחביר הנ"ל צפוי לעדכן את כל הרשומות.
התחביר הדרוש:
קוד:
UPDATE table_name SET field_name='value' WHERE date_field = (SELECT MIN(date_field) FROM table_name)
זהו התחביר הנכון, אך אם אני זוכר טוב, לפחות בחלק מהגירסאות של MySQL, יש באג שלא מאפשר לשרשר שאילתות משנה בשאילתת עדכון, כך שיתכן ויהיה צורך בשתי שאילתות נפרדות.
בתגובה להודעה מספר 3 שנכתבה על ידי ישראל K שמתחילה ב "התחביר הנ"ל צפוי לעדכן את כל..."
למה לעדכן את כולן?
פונקצית MIN בוחרת את הערך הכי מינימלי בטור, ואז כשאני אומר לשאילתא לחפש (בפיסקת WHERE) את הערך המינימלי הזה, אז היא מעדכנת את הרשומה רק איפה שמצאה אותו.
בתגובה להודעה מספר 5 שנכתבה על ידי DCD שמתחילה ב "למה לעדכן את כולן?
פונקצית..."
נסה את הקוד הבא ותבין:
קוד:
CREATE TABLE aa (id INT AUTO_INCREMENT PRIMARY KEY, a TINYINT) TYPE=MEMORY
INSERT INTO aa SET a=3;
INSERT INTO aa SET a=1;
INSERT INTO aa SET a=67;
INSERT INTO aa SET a=45;
INSERT INTO aa SET a=89;
INSERT INTO aa SET a=92;
INSERT INTO aa SET a=6;
INSERT INTO aa SET a=42;
SELECT * FROM aa;# Rows: 8;
SELECT id FROM aa WHERE a=MIN(a);
SELECT id FROM aa WHERE a=(SELECT MIN(a) FROM aa);
/*UPDATE aa SET a=44 WHERE a=(SELECT MIN(a) FROM aa);*/