mihosmihos Δημοσ. 10 Οκτωβρίου 2017 Δημοσ. 10 Οκτωβρίου 2017 Καλησπέρα παιδιά, έχω στην βάση μου έναν πίνακα με όνομα 't1' που έχει 11 στήλες και 100 γραμμές. Η τελευταία στήλη με όνομα 'f11' αποτελείται απο 100 NULL γραμμές. Αυτό που θέλω να κάνω είναι να ορίσω σε αυτή την στήλη τις πρώτες 30 γραμμές να πάρουν την τιμή 1, τις επόμενες 30 την τιμή 2 και τις άλλες 40 την τιμή 3. Πως μπορώ να εκτελέσω το κατάλληλο ερώτημα για την παραπάνω απορία;Ευχαριστώ προκαταβολικά για την οποιαδήποτε βοήθεια!
παπι Δημοσ. 10 Οκτωβρίου 2017 Δημοσ. 10 Οκτωβρίου 2017 Update tablename set f11 = 1 Limit 30 .... Limit 30,60 .... Limit 60,100 1
mihosmihos Δημοσ. 10 Οκτωβρίου 2017 Μέλος Δημοσ. 10 Οκτωβρίου 2017 Update tablename set f11 = 1 Limit 30 .... Limit 30,60 .... Limit 60,100 Σε ευχαριστώ πάρα πολύ για την βοήθεια αλλά αντιμετωπίζω το εξής πρόβλημα. Εκτέλεσα το πρώτο ερώτημα με όριο 30 αλλά στην επόμενη εκτέλεση έβαλα Limit 31,60 και μου βγάζει σφάλμα. https://imgur.com/PxyAoRZ
anon667 Δημοσ. 10 Οκτωβρίου 2017 Δημοσ. 10 Οκτωβρίου 2017 Από τα docs της MySQL [LIMIT {[offset,] row_count | row_count OFFSET offset}] Επίσης, πιο safe θα ήταν να χρησιμοποιήσεις το primary key (where) για να ξέρεις τι ακριβώς κάνεις update. Έτσι σκέτο update μυρίζει λίγο στην τύχη με ποια σειρά θα επεξεργαστεί τις εγγραφές.
mihosmihos Δημοσ. 11 Οκτωβρίου 2017 Μέλος Δημοσ. 11 Οκτωβρίου 2017 Πως θα πρέπει δηλαδή να γράψω το σωστό ερώτημα για την παραπάνω απορία μου? Κατάφερα με την εντολή που είπε ο φίλος παπι να βάλω μόνο στις 30 πρώτες εγγραφές το 1. Για να βάλω την τιμή 2 απο το 31 ως το 60 πως είναι το σωστό?
παπι Δημοσ. 11 Οκτωβρίου 2017 Δημοσ. 11 Οκτωβρίου 2017 Σωστο θα ηταν να κανεις update βάση κάποιας αλληε τιμης. Πχ αν το column foo εχει bar τότε στο fee βαλε x. Anyway, εσυ βλεπεις αυτα τα δεδομενα με αυτη την σειρα οσο δεν καμεξς delete ή κατι αλλο που θα εχει side effect στο ordering. Για δες limit 30 offset 30
Aztec Δημοσ. 15 Οκτωβρίου 2017 Δημοσ. 15 Οκτωβρίου 2017 (επεξεργασμένο) SET @rownumber = -1; update t1 set f11 = FLOOR((@rownumber:=@rownumber+1)/30)+1; άκυρο τώρα είδα ότι θες διαφορετικά τις τελευταίες 40. Το παραπανω παίζει για σετ των 30 αλλά επειδή βαριέμαι να το αλλάζω SET @rownumber = -1; update t1 set f11 = FLOOR((@rownumber:=@rownumber+1)/30)+1 LIMIT 60; update t1 set f11 = 3 where f11 is null; χωρίς order by θα γίνουν update οπως τα φέρει η mysql το offset σύμφωνα με το manual δεν παίζει με το update. UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET assignment_list [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] μπορεί να γίνει έτσι όμως απλα με limit χωρίς offset update t1 set f11 =1 where f11 is null limit 30; update t1 set f11 =2 where f11 is null limit 30; update t1 set f11 =3 where f11 is null; Επεξ/σία 15 Οκτωβρίου 2017 από Aztec
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα