|
|
1
389
是 粗略地 相当于:
通过语法习惯分组是个好主意,因为它更强大。 对于你的问题,我会这样做:
|
|
|
2
305
如果你把迄今为止的答案汇总起来,整理并改进,你就会得到这个更高级的问题:
哪个是 许多的 比他们两个都快。核武器的性能目前接受的答案的因素10-15(在我对PostgreSQL 8.4和9.1的测试)。
但这仍然远不是最佳的。使用A
用于标识行的唯一键
如果没有表的主键或唯一键(
每个表都应该有一个主键。如果你还没有,就加一个。我建议
相关: 这个怎么快?
中的子查询
排除空更新
如果已经有一些或多个行
如果
空处理中的细微差异
此查询(与
currently accepted answer by Joel
)不将空值视为相等。这两排是为了
还传入唯一索引和几乎任何其他地方,因为根据SQL标准,空值不相等。见:
奥托什
如果定义了所有要比较的列
|
|
|
3
22
查询的问题是,当使用group by子句(本质上是使用distinct)时,只能使用分组依据或聚合函数的列。不能使用列ID,因为可能存在不同的值。在您的案例中,由于HAVING子句,总是只有一个值,但是大多数RDBMS都不够聪明,无法识别这个值。 但是,这应该有效(并且不需要联接):
您也可以使用max或avg而不是min,只有在只有一个匹配行的情况下,才使用返回列值的函数。 |
|
|
4
1
我想从一列“grondoflucht”中选择不同的值,但它们应该按照“排序”列中给出的顺序排序。我无法使用
它还将给出“排序”列,因为“grondoflucht”和“sorting”不是唯一的,所以结果将是所有行。 使用组按“排序”给定的顺序选择“grondoflucht”的记录
|
|
|
5
0
如果您的DBMS不支持这样的多列的distinct:
通常可以安全地执行多重选择,如下所示:
因为这可以在大多数DBMS上工作,而且由于避免了分组功能,因此预计这比按组解决方案更快。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
|
Peter Schofield · 类型转换Postgresql 1 年前 |
|
|
Kevin Smeeks · Pyspark JDBC分区读取 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |