#Napisać procedure, która z tablicy Customers pobierze n losowo wybranych klientów. #(Uwaga! Mozna skorzystać z tabel pomocniczych) delimiter // CREATE procedure los_klient(IN n int) begin CREATE TABLE los LIKE customers; while n > 0 do REPLACE INTO los (SELECT * FROM customers ORDER BY rand() LIMIT 1); SET n = n - 1; end while; SELECT * FROM los; DROP TABLE los; end // delimiter ;
Problem jest taki ,że jeżeli klucz główny z tabeli Customers się powtórzy to chciałbym ,aby funkcjia i tak wypisała mi podaną liczbę klientów. A dzieje się inaczej zarówno w ten sposób jak również próbowałem używając INSERT IGNORE ten rekord ,który jest pomijany jest zliczany i w zwrocie dostaję de facto jeden mniej niż powinienem ,kombinuję z tym już jakiś czas i nie wiem jak to wykonać. Chcialbym poprostu ,aby jeżeli INSERTnatrafi na powtarzający się klucz zignorował to ,ale ,aby w zamian wyszukał jeszcze jeden tak ,aby liczba zwrotów się zgadzała.