Group By 如何处理重复项
How Group By works with Duplicates
我想深入了解某些 SQL 语句的工作原理。正确知道我正在调查 GROUP BY
并想知道,它如何选择 show/return 重复数据的内容。
考虑以下示例:
CREATE TABLE customers
(
FirstName VARCHAR(50),
LastName VARCHAR(50),
MobileNo VARCHAR(15)
);
INSERT INTO customers VALUES ('Niraj','Yadav',989898);
INSERT INTO customers VALUES ('Chetan','Gadodia',959595);
INSERT INTO customers VALUES ('Chetan','Gadodia',959590);
INSERT INTO customers VALUES ('Atul','Kokam',42424242);
INSERT INTO customers VALUES ('Atul','Kokam',42424246);
INSERT INTO customers VALUES ('Vishal','Parte',9394452);
INSERT INTO customers VALUES ('Vishal','Parte',939445);
INSERT INTO customers VALUES ('Vishal','Parte',9394451);
INSERT INTO customers VALUES ('Jinendra','Jain',12121);
INSERT INTO customers VALUES ('Jinendra','Jain',121212);
如果我运行这个查询...
SELECT *
FROM customers
GROUP BY FirstName;
我得到以下结果:
FirstName LastName MobileNo
--------- -------- ----------
Atul Kokam 42424242
Chetan Gadodia 959595
Jinendra Jain 12121
Niraj Yadav 989898
Vishal Parte 9394452
所以,我的问题是:returns 这些特定记录有什么原因吗?它如何确定要得到什么?我正在使用 MySQL.
在其他数据库中,您的查询将不会被允许,因为在这种情况下结果是不可预测的。
请注意 MySQL 文档对这种情况的说明:
The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate.
我还应该提一下,Gordon Linoff 最近向我指出,从 MySQL 的 5.7 版开始,默认情况下将不再允许像您这样的可能会出现不可预知结果的查询。
相关信息:MySQL 5.7: only_full_group_by Improved, Recognizing Functional Dependencies, Enabled by Default!
我想深入了解某些 SQL 语句的工作原理。正确知道我正在调查 GROUP BY
并想知道,它如何选择 show/return 重复数据的内容。
考虑以下示例:
CREATE TABLE customers
(
FirstName VARCHAR(50),
LastName VARCHAR(50),
MobileNo VARCHAR(15)
);
INSERT INTO customers VALUES ('Niraj','Yadav',989898);
INSERT INTO customers VALUES ('Chetan','Gadodia',959595);
INSERT INTO customers VALUES ('Chetan','Gadodia',959590);
INSERT INTO customers VALUES ('Atul','Kokam',42424242);
INSERT INTO customers VALUES ('Atul','Kokam',42424246);
INSERT INTO customers VALUES ('Vishal','Parte',9394452);
INSERT INTO customers VALUES ('Vishal','Parte',939445);
INSERT INTO customers VALUES ('Vishal','Parte',9394451);
INSERT INTO customers VALUES ('Jinendra','Jain',12121);
INSERT INTO customers VALUES ('Jinendra','Jain',121212);
如果我运行这个查询...
SELECT *
FROM customers
GROUP BY FirstName;
我得到以下结果:
FirstName LastName MobileNo
--------- -------- ----------
Atul Kokam 42424242
Chetan Gadodia 959595
Jinendra Jain 12121
Niraj Yadav 989898
Vishal Parte 9394452
所以,我的问题是:returns 这些特定记录有什么原因吗?它如何确定要得到什么?我正在使用 MySQL.
在其他数据库中,您的查询将不会被允许,因为在这种情况下结果是不可预测的。
请注意 MySQL 文档对这种情况的说明:
The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate.
我还应该提一下,Gordon Linoff 最近向我指出,从 MySQL 的 5.7 版开始,默认情况下将不再允许像您这样的可能会出现不可预知结果的查询。
相关信息:MySQL 5.7: only_full_group_by Improved, Recognizing Functional Dependencies, Enabled by Default!