Несмотря на то, что col1 и col2 и индексы, как дубликаты записей все еще появляются из моей таблицы для того же? - PullRequest
0 голосов
/ 29 мая 2019

Я работаю с таблицей, в которой есть 3 столбца, которые я вижу.INVERTER_ID, TIME_STAMP и POWER

INVERTER_ID и TIME_STAMP являются индексами.

Это огромный стол.Один из моих кодов выдавал ошибку, потому что встречались повторяющиеся записи.

Я получил метку времени и инвертор_ид, для которых у меня были повторяющиеся записи.'2019-05-04 21:00:00' и INV1020

Я запросил у таблицы:

SELECT `INVERTER_ID`,`TIME_STAMP`,`POWER`
FROM `INV_POWER`
WHERE `TIME_STAMP`='2019-05-04 21:00:00' and
      `INVERTER_ID` ='INV1020'

Получил только один результат.

INV1020     2019-05-04 21:00:00     0.0

Странно, я подумал, поэтому я пошел и проверил SQL-запрос, который использовал мой код, и запросил его:

SELECT `INVERTER_ID`,`TIME_STAMP`,`POWER
FROM `INV_POWER`
WHERE `TIME_STAMP`<='2019-05-04 21:00:01' and
      `TIME_STAMP`>='2019-05-04 21:00:00' and
       `INVERTER_ID` ='INV1020'

В этом случае я получил два результата:

INV1020     2019-05-04 21:00:00     0.0
INV1020     2019-05-04 21:00:00     0.0

Любопытноо том, как и почему это происходит.когда у меня есть INVERTER_ID и TIME_STAMP в качестве индексов, я проверил структуру таблицы и обнаружил, что AUTO_INDEX - это primary_key и индекс.Поэтому я запросил снова, но на этот раз с AUTO_INDEX, столбец в моем выборе.

SELECT `AUTO_INDEX`, `INVERTER_ID`,`TIME_STAMP`,`POWER` FROM `INV_POWER` WHERE `TIME_STAMP`<='2019-05-04 21:00:01' and `TIME_STAMP`>='2019-05-04 21:00:00' and`INVERTER_ID` ='INV1020'

6081057323  INV1020     2019-05-04 21:00:00     0.0
25805384826     INV1020     2019-05-04 21:00:00     0.0
------------------------------------------------------------------

Вопрос: Почему это происходит?С установленным индексом, как он вообще был вставлен?Почему я вижу дубликаты при использовании < и >;а не когда я использую =.

Заранее спасибо :)) 1039 *

1 Ответ

0 голосов
/ 29 мая 2019

Я подозреваю, что тип данных столбца TIME_STAMP допускает доли секунды, например, тип данных может быть DATETIME(3).(Мы просто догадываемся здесь.)

https://dev.mysql.com/doc/refman/8.0/en/datetime.html

Это могло бы объяснить наблюдаемое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...