sql >> データベース >  >> RDS >> Oracle

ALL演算子VS空のクエリのAny

    EMPの例を考えてみましょう そのリンクのテーブル。

    具体的にはこのクエリ-

    SELECT e1.empno, e1.sal
    FROM   emp e1
    WHERE  e1.sal > ANY (SELECT e2.sal
                         FROM   emp e2
                         WHERE  e2.deptno = 20);
    

    いずれかの場合、あなたが尋ねている質問は、「私の給料は、部門20の誰よりも高いですか(少なくとも1人)」です。これは、少なくとも1つを望んでいることを意味します 人の給料はあなたよりも少ない。行がない場合、これはFALSEを返します 給料があなたより低い人は誰もいないので、あなたは少なくとも1人を望んでいました。

    ALLの場合、あなたが尋ねるであろう明白な質問は「私の給料は誰よりも高いですか?」です。それを「私より高い給料を持っている人はいないのか」と言い換えます。行が返されない場合、答えはTRUEです。 なぜなら、「私よりも給料が高い人は実際にいないからです。



    1. 再実行のためにMySQLビューで使用されるSQLを取得して変更する

    2. エラーを修正する方法:列c.relhasoidsはPostgresに存在しませんか?

    3. MySQLでUNIONを使用する場合の「エラー1054(42S22):「order句」の不明な列「…」」を修正

    4. MySQLでJoinを使用して削除