Ответ Игоря Чубина можно улучшить. При тестировании, если X является простым, алгоритм не должен проверять каждое число до квадратного корня из X, он должен проверять только простые числа до sqrt (X). Таким образом, он может быть более эффективным, если он ссылается на список простых чисел по мере его создания. Функция ниже выводит список всех простых чисел под b, что удобно в виде списка по нескольким причинам (например, когда вы хотите узнать количество простых чисел & lt; b). Проверяя простые числа, он экономит время при более высоких числах (сравните около 10 000, разница резко).
from math import sqrt
def lp(b)
primes = [2]
for c in range(3,b):
e = round(sqrt(c)) + 1
for d in primes:
if d <= e and c%d == 0:
break
else:
primes.extend([c])
return primes
изменить таблицу, добавив ограничение UNIQUE
ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)
, но вы можете сделать это, если таблица employee
пуста.
или если записи существуют, попробуйте добавить IGNORE
ALTER IGNORE TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename,dno,mgr,sal)
UPDATE 1
Что-то пошло не так, я думаю. Вам нужно только добавить уникальное ограничение для столбца ename
, так как eno
всегда будет уникальным из-за AUTO_INCREMENT
.
Чтобы добавить уникальное ограничение, вам нужно сделать некоторые очистки в вашей таблице.
Запросы ниже удаляют некоторые повторяющиеся записи и изменяет таблицу, добавляя уникальное ограничение для столбца ename
.
DELETE a
FROM Employee a
LEFT JOIN
(
SELECT ename, MIN(eno) minEno
FROM Employee
GROUP BY ename
) b ON a.eno = b.minEno
WHERE b.minEno IS NULL;
ALTER TABLE employee ADD CONSTRAINT emp_unique UNIQUE (ename);
Вот полная демонстрация
Создайте UNIQUE CONSTRAINT
, на котором вы думаете, что существует дубликат.
как
ALTER TABLE MYTABLE ADD CONSTRAINT constraint1 UNIQUE(column1, column2, column3)