ノードの値で順序付けられたテーブルBSTからノードタイプを見つけるためのクエリを作成しました。 テーブル、BSTは、2列NがBST内のノードの値を表し、Pは が言うNの親であるNとPを、持っていた、BSTは、次のレコードを持っています BST Table"NOT IN"が期待通りに動作しない
私は正常にクエリを実行します次のように:
SELECT n,CASE
WHEN p IS NULL THEN 'Root'
WHEN n IN (SELECT DISTINCT p FROM BST) THEN 'Inner'
ELSE 'Leaf'
END
FROM BST
ORDER BY n;
しかし、その代わりに以下に示すように私は、 "NOT IN" を使用して、同じクエリをしようとしたとき、 "IN" を使用しての:
SELECT n,CASE
WHEN p IS NULL THEN 'Root'
WHEN n NOT IN (SELECT DISTINCT p FROM BST) THEN 'Leaf'
ELSE 'Inner'
END
FROM BST
ORDER BY n;
期待通りに機能しませんでした。なぜそうなのか?
NOT INとNULLはあなたを驚かせるかもしれません! (そのため、代わりに「存在しない」ことをお勧めします。) – jarlh
「期待どおりに動作しませんでした」 - 何を期待しましたか? –
@a_horse_with_no_name "IN"と同じ出力を出すことを期待しました – PiyushM