2017-10-11 18 views
0

に対するテーブルをチェックしてくださいだから私は、私は、私は、ユーザーがリストされていないことを確認するために照合してチェックする必要があり、別のテーブルがあり、テーブルから1別のテーブルのSQL

SELECT UA.user FROM UserAcct UA 

を得た人のリストを持っています表2に

LEFT OUTER JOIN AccountsLog AL ON AL.user = UA.user 

最終的に私が何をしようとしていますどのような表1から、人々はそう自分の名前が返されます、表2のアクションを実行していることを確認してくださいです。このアクションを実行すると、その名前が表2に表示されます。ここのヘルプは非常に高く評価されています。これが十分な情報でない場合は、私はもっと努力して詳細を説明します。ありがとう!私はあなたがAccountsLogに存在していないUserから何かをしたい、正しく理解していれば

+2

あなたのjoinで 'WHERE AL.User IS NULL'を試してみるか、' WHERE EXISTS(select ...) 'を試してください –

+1

何が問題なのですか?ちょうど何をしたいですか?あなたはそれを明確にすることができますか? –

+1

@WEI_DBAはい、はい私は... :) –

答えて

2

あなたは左の外側を行う見つけるために参加していると思いますテーブルAのテーブルBにないレコードは、単にNULLを検索します。

ですから、LEFT OUTERがON AL.user = UA.user上のテーブルに参加すると、あなたはそれから句を使用して欠落しているレコードを検索することができます

WHERE AL.user IS NULL 
+0

これは完璧に、ありがとう!!!! – snapper

1

だから、私はあなたが正しい軌道に乗って

SELECT UA.user FROM UserAcct UA 
LEFT OUTER JOIN AccountsLog AL ON UA.user = AL.user 
WHER AL.User is null -- this will give you anything that is on user and not in accountslog 

よろしく

0

これだけUAのユーザーを与えるとしませんAL

SELECT UA.user FROM UserAcct UA 
MINUS 
SELECT AL.user FROM AccountsLog AL 

編集: - SQLのバージョンがそれをサポートしている場合、SQLサーバーの使用を除き、代わりにMINUS(Oracleでサポートされている)

+1

'MINUS'はOracle固有の演算子です。 SQL標準(とSQL Server)では 'EXCEPT'となるでしょう –

+0

ああ..私はSQLサーバを見ませんでした。それからマイナスではなくマイナスでなければなりません – Valli

0

、存在する未使用してみてください。 Subqueries with NOT EXISTS。私はそれが "外部の結合を残してヌル値をフィルタリングする"よりも速いことを発見しました。

関連する問題