У меня есть таблица (скажем, table1 ) с одним полем типа данных float (скажем, field1 ). Все значения в этом поле являются уникальными с точностью до 8 десятичных знаков.
Я выполнил следующие запросы к этой таблице:
SELECT COUNT(*) FROM table1;
Результатом является общее количество записей по запросу: 5179
SELECT COUNT(DISTINCT(field1)) FROM table1;
Результат снова тот же, что и для всех записей: 5179
Приведенные выше два результата показывают, что значения в поле " field1 " являются уникальными.
Но когда я запускаю следующие запросы к этой таблице:
SELECT * FROM table1;
И
SELECT field1 FROM table1;
Оба запроса дают результат со значениями в field1 Округлено до 5 десятичных знаков. Который показывает большинство значений одинаковых.
Это из-за типа данных float .
Тогда почему функция DISTINCT () получает фактически сохраненное значение, а не округленное.
EDIT:
Округленные значения - это только те, которые> 1. для значений <0 он работает идеально. </p>