【问题标题】:Select any salary <3000 from emp table..please explain从emp表中选择任何工资<3000..请解释
【发布时间】:2014-05-26 03:32:10
【问题描述】:

从emp表中选择任何工资..请解释

正如我看到的答案:

select * from emp  where sal > any(select sal from emp where sal < 3000);

但是好像会返回所有薪水大于最低薪水的记录。

如果我错了,请纠正我。

【问题讨论】:

  • 它做了类似的事情。我还没弄清楚为什么 SQL 有“any”、“all”和“some”关键字。通常有更容易理解的方式来编写这样的查询。

标签: sql sql-server tsql


【解决方案1】:

您想要:

select * from emp where sal < any(select sal from emp where sal<3000)

结论:你放了'>'而不是'

或者你只是想:

select sal from emp where sal < 3000

【讨论】:

  • 第一个是随机行选择器吗?
  • @Niemand :我认为它会从 "(select sal from emp where sal
  • @BoratSagdiyev 运算符 any 表示“如果子查询返回的列中的任何值的比较结果为 TRUE,则返回 TRUE。”
  • @user130240: imo 整个 any 语句都是多余的,你应该坚持 select sal from emp where sal
【解决方案2】:

对于所提供的查询返回的至少一个条目,any 语句返回比较结果为 true 的所有条目。因此,它返回所有条目,除了没有条目且工资较低的条目

【讨论】:

    【解决方案3】:

    是的,它会返回所有大于 3000 的记录,你是对的。

      select * from emp where sal < 3000
    

    【讨论】:

      【解决方案4】:

      下面是ANY运算符的详细解释:

      Comparison Operators Modified by ANY, SOME, or ALL

      关键点:

      " >ALL (1, 2, 3) 表示大于 3"

      ">ANY 表示大于至少一个值,即大于最小值。所以>ANY (1, 2, 3) 表示大于1。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-16
        相关资源
        最近更新 更多