63 sql
是否有任何方法可以在不指定列名的情况下对表的所有列进行分组?喜欢:
select * from table group by *
Eli*_*jah 45
SELECT DISTINCT * FROM MyFooTable;
如果按所有列分组,则只是请求删除重复数据.
例如,包含以下数据的表:
 id |     value      
----+----------------
  1 | foo
  2 | bar
  1 | foo
  3 | something else
如果您执行以下查询,该查询基本上与SELECT * FROM MyFooTable GROUP BY *您假设*表示所有列的查询相同:
SELECT * FROM MyFooTable GROUP BY id, value;
 id |     value      
----+----------------
  1 | foo
  3 | something else
  2 | bar
它会删除所有重复值,这实际上使其在语义上与使用DISTINCT关键字相同,但结果排序除外.例如:
SELECT DISTINCT * FROM MyFooTable;
 id |     value      
----+----------------
  1 | foo
  2 | bar
  3 | something else
小智 13
他正在尝试查找并在表格中显示重复的行.
SELECT *, COUNT(*) AS NoOfOccurrences
FROM TableName GROUP BY *
HAVING COUNT(*) > 1
我们有一个简单的方法来实现这一目标吗?
mja*_*day 11
如果您使用的是SqlServer,则distinct关键字应该适合您.(不确定其他数据库)
declare @t table (a int , b int)
insert into @t (a,b) select 1, 1
insert into @t (a,b) select 1, 2
insert into @t (a,b) select 1, 1
select distinct * from @t
结果是
a b
1 1
1 2
简短的回答:不。GROUP BY 子句本质上要求按顺序排列结果。不同的字段分组顺序会导致不同的结果。
指定通配符将使语句易于解释和不可预测的行为。
不。你想做一些聚合吗?如果是这样,你可以做这样的事情来获得你需要的东西
;with a as
(
     select sum(IntField) as Total
     from Table
     group by CharField
)
select *, a.Total
from Table t
inner join a
on t.Field=a.Field
我想对完整的结果集进行计数和求和。我用GROUP BY 1=1.
不,因为这从根本上意味着您不会对任何东西进行分组。如果您按所有列进行分组(并且有一个正确定义的表和唯一索引),那么SELECT * FROM table本质上与SELECT * FROM table GROUP BY *.