MYSQL:如何通过查询返回MYSQL组中所有不同的行

MYSQL:如何通过查询返回MYSQL组中所有不同的行,mysql,group-by,sql-mode,Mysql,Group By,Sql Mode,表T中有一些列和值 T ======================== id | name | g1 | g2 ========================= 10 | abc | 1 | 1 14 | abc | 1 | 0 33 | abc | 1 | 0 42 | def | 1 | 0 52 | def | 1 | 1 63 | def | 2 | 0 66 | def |

表T中有一些列和值

T
========================
id |   name |   g1 |  g2 
=========================
 10 |  abc   |   1  | 1
 14 |  abc   |   1  | 0
 33 |  abc   |   1  | 0
 42 |  def   |   1  | 0 
 52 |  def   |   1  | 1
 63 |  def   |   2  | 0
 66 |  def   |   2  | 0
 67 |  def   |   2  | 0
 74 |  def   |   1  | 0
我想用GROUPBY子句选择所有distict行

我的问题是

select * 
from T 
group by name 
having max(g2) = 0
我的预期结果是

    ========================
    id |   name |   g1 |  g2 
    =========================
     14 |  abc   |   1  | 0
     33 |  abc   |   1  | 0
     42 |  def   |   1  | 0 
     63 |  def   |   2  | 0
     66 |  def   |   2  | 0
     67 |  def   |   2  | 0
     74 |  def   |   1  | 0
**我添加了max(g2),因为我需要使addwhere子句针对每个组:D谢谢你的回答。我需要聚合来限制返回(having子句)。另一个解决方法是使用子查询

我的MySQL只返回每个组的第一行

    ========================
    id |   name |   g1 |  g2 
    =========================
     14 |  abc   |   1  | 0
     42 |  def   |   1  | 0 
忽略其他列(id和g1)的所有差异

正如我记得使用其他DBMS(oracle和MsSQL,或MySQL)时,我可以期望我的查询返回上述预期结果。返回所有不同的行

或者mySQL是否有任何需要更改的设置

我已经尝试过设置sql\u mode=ONLY\u FULL\u GROUP\u BY,但它只是显示指定列的通知,据我所知,在GROUP BY子句中不指定列名就是显示具有不同列值的所有行

或者,是否需要指定任何sql_模式设置??或者至少为什么MySQL只返回组的第一行

set @@global.sql_mode= 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER'

set @@sql_mode=''

提前感谢您的回复…

group by
子句在任何dbms中都不用于此目的

select * 
from T 
where g2 =0
order by name
这个问题应该符合你的目的

下面是GroupBy子句的简单解释。GroupBy子句通常与聚合函数一起使用。 试试这个-

SELECT t1.* FROM t t1
  LEFT JOIN (
    SELECT name, g1, g2, MIN(id) id FROM t
      GROUP BY name, g1, g2
      HAVING COUNT(*) = 1
    ) t2
  ON t1.name = t2.name AND t1.g1 = t2.g1 AND t1.g2 = t2.g2
WHERE t2.id IS NULL;
此查询将返回所有重复记录

我的输出是:

+------+------+------+------+
| id   | name | g1   | g2   |
+------+------+------+------+
|   14 | abc  |    1 |    0 |
|   33 | abc  |    1 |    0 |
|   42 | def  |    1 |    0 |
|   63 | def  |    2 |    0 |
|   66 | def  |    2 |    0 |
|   67 | def  |    2 |    0 |
|   74 | def  |    1 |    0 |
+------+------+------+------+