我有表筆與某些列和值MYSQL:如何返回所有不同行中的MySQL GROUP BY查詢
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
,我想by子句
我的查詢,選擇與組的所有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
**我增加了最大值(g2),因爲我需要在每個組中添加where子句。 :D謝謝你的答案。我需要聚合來限制回報(有條款)。另一個解決辦法是有子查詢
通過我的MySQL返回每個組
========================
id | name | g1 | g2
=========================
14 | abc | 1 | 0
42 | def | 1 | 0
忽略其他列(ID和G1)所有的差異只在第一行。
正如我記得使用其他DBMS(oracle和MsSQL或MySQL),我可以期望我的查詢返回上面的預期結果。返回所有不同的行。
或者是否有任何設置的mySQL要改變?
我已經試過SET sql_mode=ONLY_FULL_GROUP_BY
,但它只是顯示通知來指定列,在我的理解中沒有在group by子句中指定列名是顯示具有不同列值的所有行。
或者,是否有任何sql_mode設置需要指定?或者至少爲什麼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=''
預先感謝您的任何反應......