【发布时间】:2015-12-20 03:27:18
【问题描述】:
我有一个关于如何在这个 SQL 查询中使用小于运算符的问题,该查询回答了以下英文语句:
Drinkers who frequent at least two bars
注意:有一个名为frequents 的表,其中包含饮酒者和酒吧列。
现在,我最初通过使用 group by 和 having count 运算符解决了这个问题,但我偶然发现了这个也是正确的查询:
SELECT DISTINCT f1.drinker
FROM frequents f1, frequents f2
WHERE f1.drinker = f2.drinker
AND f1.bar < f2.bar
我在理解这个查询的机制时遇到了一点麻烦,特别是最后的 AND 语句。
【问题讨论】:
-
我相信 应该给出一些正确的结果,因为它仍然查询不相等。
-
@Engin 使用
<而不是<>的目的是防止在两个订单中都获得对。 (a, b) 和 (b, a)。由于存在 DISTINCT,因此对于最终结果来说有点没有实际意义,但可能会提高性能。 -
这没有实际意义。没有它每个饮酒者都会被退回。
-
@Uueerdo 哈哈!从来没想过,也许是因为与众不同。谢谢。
-
@aquinas
<与<>的选择没有实际意义,而不是使用一般不等于运算符。