Что не так в этом запросе, иначе возвращает ноль в виде десятичной дроби 0.00 ед. 0? Я пытаюсь вставить данные игрока в другую таблицу и сразу вычислить точность игрока. Если точность вычислений невозможна при установке нуля в этом столбце.MySQL ELSE возвращает ноль в качестве десятичного момента нормального нуля
Запрос:
INSERT INTO player_tmp (id, name, accuracy)
SELECT player.id, player.name,
CASE
WHEN hit0 > 0 AND fired0 > 0 THEN ROUND(hit0/fired0,2)
ELSE 0
END AS accuracy FROM player INNER JOIN weapons ON player.id = weapons.id ORDER BY weapons.kills0 DESC, accuracy DESC
назначение стол:
CREATE TABLE IF NOT EXISTS `player_tmp` (
`pos` mediumint(6) unsigned NOT NULL AUTO_INCREMENT,
`id` int(8) unsigned NOT NULL DEFAULT '0',
`name` varchar(23) NOT NULL DEFAULT '',
`accuracy` varchar(13) NOT NULL DEFAULT '0',
PRIMARY KEY (`pos`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
В чем проблема с этим типом? (Надеюсь, вы не делаете что-то вроде 'value == '0" 'в коде.) Если точность всегда будет числовой, почему бы не определить ее как таковую? Если вы этого не сделаете, у вас будет еще больше головных болей по линии (когда сортировка дает этот порядок «1,11,12,2,20,23,3' ....) – Uueerdo