2009-07-24 6 views
1

vidvidcollapse_menuに一致しないテーブルvocabularyからすべての名前を表示しようとしています。どうすればいい?SQLの別のテーブルと一致しないテーブルの行を選択するにはどうすればよいですか?

Table vocabulary 
    vid  name 
    1 Sections 
    2 Posts 
    6 Forums 
    5 Departments 
    13 Free Tags 
    8 Committees 
    9 Training and Workshops 
    10 Policies 
    12 Projects 
    14 Teams 

Table collapse_menu 
vid 
8 
5 
10 
+2

は「説明的なタイトルフー」の芸術を学ぶしてください。それはあなたの旅の中であなたを助けるでしょう。 –

答えて

4

選択名;

+0

または「WHERE NOT EXIST(副選択)」を使用してください。 –

-2
select name 
from vocabulary as v, 
    collapse_menu as c 
where v.vid!=c.vid 

編集:申し訳ありませんが、適切に質問を読んでいません。 vocubulary VID NOT IN(collapse_menuからVIDを選択)

1

SELECT * FROM語彙、collapse_menu WHERE vocabulary.vid <> collapse_menu.vidから

12

vidがcollapse_menuテーブルにないボキャブラリの名前を要求しているとします。

が、その場合には

SELECT name 
FROM vocabulary 
LEFT JOIN collapse_menu ON vocabulary.vid = collapse_menu.vid 
WHERE collapse_menu.vid IS NULL 
+0

ビンゴ。他の提案のいくつかは単純な状況のために機能しますが、これは複雑なケースを覚えておくテクニックです。 – SeaDrive

+0

これが受け入れられる回答である必要があります。 「グループ化された最大値」を計算する場合、つまりグループごとに最大値を返す場合にも、同じ手法が便利です。次に、最大値の定義によって、テーブルを自分自身とeto voilaに参加させることによって、より大きな価値を持つものすべてを排除する==より大きな価値を持たないものをすべて取ることに問題を変えることができます。 – namero999

関連する問題