我想知道为什么选择计数不同的返回零结果。我在这里也检查了各种答案,但我的情况并没有回答。 MySQL 5.6版 链接检查 http://sqlfiddle.com/#!9/276302/3/0
示例架构:
function mult(data, n) {
return data.reduce((r, e) => {
return r.push(e, ...Array.from(Array(n), (_, i) => {
const [text, n] = e.split(/(\d+)/);
return text + (+n + i + 1)
})), r
}, []);
}
console.log(mult(["apple0", "banana0", "pear0"], 2))
console.log(mult(["apple4", "banana2", "pear0"], 3))
查询:
CREATE TABLE IF NOT EXISTS `employees` (
`id` int(6) unsigned NOT NULL,
`name` varchar(3) NOT NULL,
`salary` varchar(200) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `employees` (`id`, `name`, `salary`) VALUES
('1', 'a', 6),
('2', 'b', 5),
('3', 'c', 5),
('4', 'd', 4);
伙计们,你有什么想法吗?
答案 0 :(得分:2)
在我看来,这是MySQL 5.6特定版本的错误。
其他答案表明这是数据类型的问题。但是如果我们删除DISTINCT
:
SELECT COUNT(salary)
FROM employees;
-- 4
答案 1 :(得分:1)
select count(ds) from (SELECT distinct(salary) as ds
FROM employees) as s;
答案 2 :(得分:0)
您需要将薪水的数据类型从varchar更改为int。 要么 你需要在"中包含薪水值。 "
答案 3 :(得分:0)
这是MySQL中的a known and long-standing bug。 :-(
答案 4 :(得分:-2)
您的工资列是VARCHAR类型,请尝试使用INT或其他适当的数据类型。