在SELECT DISTINCT语句中使用MYSQL的MD5()操作会忽略DISTINCT子句

在SELECT DISTINCT语句中使用MYSQL的MD5()操作会忽略DISTINCT子句,mysql,md5,distinct,Mysql,Md5,Distinct,因此,如果我这样做: SELECT DISTINCT column_1, column_2, MD5(rand()) FROM table 我得到n行数,这是正确的不同行数 如果我这样做: SELECT DISTINCT column_1, column_2, "whatever" FROM table 上面返回的n+m基本上是表中的所有行 这里发生了什么 查询的详细信息: 从表中选择不同的列_1、列_2 将返回列_1和列_2的不同结果。例如,如果您有: column_1 column_2

因此,如果我这样做:

SELECT DISTINCT column_1, column_2, MD5(rand()) 
FROM table
我得到n行数,这是正确的不同行数

如果我这样做:

SELECT DISTINCT column_1, column_2, "whatever"
FROM table
上面返回的n+m基本上是表中的所有行


这里发生了什么

查询的详细信息:

从表中选择不同的列_1、列_2

将返回列_1和列_2的不同结果。例如,如果您有:

column_1 column_2
Peter 26 
John 27
Adam 26
Fred 25
结果将是所有四行

包含MD5rand将生成一个新列,从而将表计数器中的所有结果返回到您实际报告的值(不同行数)。i、 e.选择不同的列_2,表中的MD5rand也将返回4行:

26, 2c346f92e3ccccfeccc75b1f8fbec910
27, 6f8af159c2658cf8a33d0e29419a71a6
26, 4f7f54cd9527c509da322caeb31c73c9
25, 01a4a55f61cba7ef922180b5520698d2
另一方面,将相同的值传递给查询将实际返回不同数量的结果。选择DISTINCT column_2,表中的任何内容都将返回3行:

26, whatever
27, whatever
25, whatever

您的查询明细:

从表中选择不同的列_1、列_2

将返回列_1和列_2的不同结果。例如,如果您有:

column_1 column_2
Peter 26 
John 27
Adam 26
Fred 25
结果将是所有四行

包含MD5rand将生成一个新列,从而将表计数器中的所有结果返回到您实际报告的值(不同行数)。i、 e.选择不同的列_2,表中的MD5rand也将返回4行:

26, 2c346f92e3ccccfeccc75b1f8fbec910
27, 6f8af159c2658cf8a33d0e29419a71a6
26, 4f7f54cd9527c509da322caeb31c73c9
25, 01a4a55f61cba7ef922180b5520698d2
另一方面,将相同的值传递给查询将实际返回不同数量的结果。选择DISTINCT column_2,表中的任何内容都将返回3行:

26, whatever
27, whatever
25, whatever
现在,您正在按列1、列2从表组中执行select blah,对吗?或者您需要一个包含这些信息的答案吗?所以您现在正在按列1、列2从表组中进行选择,对吗?或者你需要一个有这些信息的答案吗?