每讨论@ mwan的答案,考虑使用INT
是字段而不是FLOAT
。当您连续行INSERT
时,您可以乘以10的某个幂(取决于您需要的精度水平),并且当您SELECT
时,您可以用相同的幂数除以10,但由于字段为INT
,您可以始终相信你的WHERE
子句将匹配正确的行:
CREATE TABLE `tbl_products` (
frequency INT,
gain INT,
gain_variation_x100 INT, # give it a name that will remind you
noise INT,
power INT
);
INSERT INTO `tbl_products` VALUES
('1', '2', '0.2' * 100, '2', '10'),
('2', '2', '0.2' * 100, '2', '10'),
('2', '2', '0.5' * 100, '2', '10')
# ↑
# `---- multiply here
;
SELECT *, ROUND(gain_variation_x100/100, 1) AS gain_variation
FROM tbl_products # ^---. ^---- show 1 digit of precision
WHERE frequency BETWEEN '2' AND '3' # \
AND gain = '2' # `----- divide here
AND gain_variation_x100 = ROUND('0.2' * 100)
AND noise = '2' # ^----- multiply here
AND power = '10'
;
你可以看到这个在这里工作:http://sqlize.com/829275n1Fc
什么口味SQL的? –
@pekka我正在使用MySQL – Nitish
你的表是否有满足你的整个'WHERE'子句的行?请向我们展示您期待的行。 –