Mysql为什么选择count不同的返回零

时间:2018-03-19 17:08:24

标签: mysql

我想知道为什么选择计数不同的返回零结果。我在这里也检查了各种答案,但我的情况并没有回答。 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);

伙计们,你有什么想法吗?

5 个答案:

答案 0 :(得分:2)

在我看来,这是MySQL 5.6特定版本的错误。

但它适用于MariaDBMySQL 5.7

其他答案表明这是数据类型的问题。但是如果我们删除DISTINCT

SELECT COUNT(salary)
FROM employees;
-- 4

DBFiddle Demo MySQL 5.6

答案 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或其他适当的数据类型。

见这里: http://sqlfiddle.com/#!9/875bde/1/0