【问题标题】:SQL using ALL AND NOT operators使用 ALL AND NOT 运算符的 SQL
【发布时间】:2016-03-28 00:55:08
【问题描述】:

我对运算符 [NOT] 和 [ALL] 有疑问

给定tba

id  name
1   a
2   b
3   c
4   d
5   e

tbb:

id  name
6   a
7   b
8   c
9   d
10  e

test:

id  name
4   a
5   b
7   c

我运行以下查询:

SELECT id, name
  FROM tbb
  WHERE (tbb.id > ALL (SELECT id FROM tba))
    AND (NOT tbb.id < ALL (SELECT id FROM test));

data A data B

问题出在| 6 | a |行中,为什么它返回的值test.id行中的值?

【问题讨论】:

  • 您能否添加您期望结果的列表?也许可以解释您要实现的目标(例如:b 中的所有记录,其中id 大于来自a 的任何id 不是test 的成员)?另外,请为您使用的任何风格的 sql 添加标签。

标签: sql operator-keyword


【解决方案1】:

我不完全明白你的问题。 test.id 有三个值,4、5、7。这个表达式:

tbb.id < ALL (SELECT id FROM test)

返回“false”,因为 4 和 5 不正确。

因此,

NOT tbb.id < ALL (SELECT id FROM test)

返回 TRUE。

作为说明:我不使用 ALL/SOME/ANY 运算符(或者更准确地说,非常、非常、非常少地使用它们)。我觉得写的比较清楚:

tbb.id < (SELECT MIN(id) FROM test)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多