2017-10-02 14 views
0

myschemaの2つのテーブル:投稿とコメント。コメントのonIdは投稿のisを指します。次の2つのポストグルコードのうち、最初のコード部分になぜselect nullがあるのですか?違いは何ですか?postgres:なぜサブクエリで `select null`ですか?

DELETE FROM myschema.comment comment 
    WHERE NOT EXISTS (
    SELECT NULL 
    FROM myschema.post post 
    WHERE post.id = comment."onId" 
); 

DELETE FROM myschema.comment comment 
    WHERE NOT EXISTS (
    SELECT * 
    FROM myschema.post post 
    WHERE post.id = comment."onId" 
); 

誰もが違いを示すいくつかの例はありますか?おかげ

(postgresのは、MySQLと同じではありません。私の質問が重複しないように。私はmysqlとの私の質問にタグを付けることができない、と私はいつもmysqlでタグ付けされた質問を検索しません。私は私の記事のタイトルにpostgresを置く理由があります。)

+0

さらに、functionallityには?彼らは同じです。 – sagi

+0

[Subquery using Exists 1 or Exists \ *](https://stackoverflow.com/questions/1597442/subquery-using-exists-1-or-exists) – FuzzyTree

+0

このコンテキストでは@DaveNewtonの複製があります。 .. –

答えて

0

Postgresは、それはあなたがnull1、または*を選択するかどうかを任意の違いはありませんので、existsサブクエリのためのselect文を無視するのに十分なスマートです。

Subquery using Exists 1 or Exists *を参照してください。その質問はSQL Serverに関連していますが、postgresにも同じことが当てはまります

+0

postgresはmysqlと同じではありません。だから私の質問は重複しない。私はmysqlで質問にタグを付けることができません。mysqlでタグ付けされた質問は常に検索しません。それで私は私のポストタイトルに 'postgres'を入れました。 – BAE

+0

ここではdbmsベンダーについてはあまり関係ありません。 [NOT] EXISTSサブクエリの標準的な動作は、SQL標準でselect句が必要なため、select句は重要でなく、実際にはこれらの条件でのみ使用されるということです。内部的には、これらの述語はセミジョインとして扱われ、それらのサブクエリのfromとwhere句がそれらの重要な部分です。 *を選択し、1を選択し、ヌルを選択し、コメント設定を行います。 –

関連する問題