Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询不同的二进制替换为日期列_Mysql_Distinct - Fatal编程技术网

Mysql SQL查询不同的二进制替换为日期列

Mysql SQL查询不同的二进制替换为日期列,mysql,distinct,Mysql,Distinct,我在我的数据库中有多顿饭,其中有一个文本类型。有时我会退格,有时不会 Meal 1 hamburger1 Meal 2 hamburger1 hamburger2 hamburger3 hamburger4 Meal 3 Pizza1 Pizza2 Meal 4 hamburger1 hamburger2 hamburger3 hamburger4 <- with whitespace 它起作用了。但是当我添加date列时,distinct不再起作用。也许date是mysql关键

我在我的数据库中有多顿饭,其中有一个文本类型。有时我会退格,有时不会

Meal 1
hamburger1

Meal 2
hamburger1
hamburger2
hamburger3
hamburger4

Meal 3
Pizza1
Pizza2

Meal 4
hamburger1
hamburger2
hamburger3
hamburger4  <- with whitespace
它起作用了。但是当我添加date列时,distinct不再起作用。也许date是mysql关键字,这破坏了我的查询

SELECT DISTINCT(BINARY replace(description,' ','')), description, date, type FROM meals

如何使其与名为date的列一起工作?

DISTINCT
不是一个函数,即使您使用了括号使其看起来像一个函数

DISTINCT
是一个查询修饰符。它始终适用于选择列表中的所有列。如果任何列不同,则整行将被视为不同。你用的括号实际上毫无意义

示例:以下行彼此不同,因为日期与其他行上的日期不同,即使前两列相同

a  1  2016-10-20
a  1  2016-10-21
a  1  2016-10-22
如果要将查询结果减少到在一个特定列中具有不同值的行,请使用
分组依据

SELECT TRIM(description) AS description, MAX(date), MAX(type) 
FROM meals
GROUP BY description
(提示:
TRIM()


其他列(日期和类型)应保存在组聚合函数中。我在本例中使用了MAX()。如果您不这样做,并且组中有多个日期和类型值不同的行,它将任意选择其中一行。这种模棱两可的查询在MySQL 5.7及更高版本中默认会抛出一个错误。

到底是什么不起作用?我不确定,但我怀疑您的date列使每个事件都与其他事件不同(即,在结果集中将作为单独的行返回)。问题是,distinct被忽略,我对所有行都有一个正常的select
SELECT TRIM(description) AS description, MAX(date), MAX(type) 
FROM meals
GROUP BY description