Сокращенное неверное значение DOUBLE: '' из SUM () в десятичном формате DATATYPE (10,2) - PullRequest
1 голос
/ 06 ноября 2019

Первоначально встречается Предупреждение |1292 |Сокращенное неверное значение DOUBLE: '' выполняется этот запрос

SELECT DATE(Timestamp), COUNT(*), SUM(Amount) FROM remote_tickets WHERE DATE(Timestamp) = '2019-10-31' AND CCTransactionId != '';

Но предупреждение также появляется, когда я выдаю

SELECT COUNT(*) FROM remote_tickets WHERE CCTransactionId != '';

НО НЕ ЗА

SELECT COUNT(*) FROM remote_tickets;

Схема

CREATE TABLE `remote_tickets` (
  `TicketId` int(11) NOT NULL,
  `DeviceId` int(11) NOT NULL,
  `Amount` decimal(10,2) NOT NULL,
  `CustomerCategoryName` varchar(100) NOT NULL,
  `PaymentType` varchar(6) NOT NULL,
  `CCTransactionId` int(11) DEFAULT NULL,
  `Timestamp` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Как отследить эту проблему? Это плохие данные? Возможно, стоит упомянуть, что я получаю предупреждение от mysqlmonitor, но не от PHPMyAdmin при выдаче SHOW WARNINGS.

1 Ответ

2 голосов
/ 06 ноября 2019

Ваша таблица определяет CCTransactionId как целое число, но вы сравниваете его со строкой ('') в предложении WHERE вашего запроса. Отсюда и предупреждение, которое вы получаете. Соответственно, запрос без предложения WHERE не вызывает предупреждение.

Возможно, вы захотите:

WHERE CCTransactionId IS NOT NULL

Или, может быть:

WHERE CCTransactionId != 0
...