私はSQLコードに続くいる他のいくつかのコマンドを使用して()EXISTSしかし、うまくいきません。ads<>'0'
、ads<>('0')
、m.ads<>0
などSQL:使用は
なぜそれが機能していないと思いますか?
「動作しません」つまり、「広告<> 0」という行を追加すると、(この行を入力しなかった場合と同様に)クエリ結果に変更はありません。 代わりに、 'ads = 0'行を追加すると、ゼロの値(実際に存在する)がないフィールドのように空の結果が出力されます
私はSQLコードに続くいる他のいくつかのコマンドを使用して()EXISTSしかし、うまくいきません。ads<>'0'
、ads<>('0')
、m.ads<>0
などSQL:使用は
なぜそれが機能していないと思いますか?
「動作しません」つまり、「広告<> 0」という行を追加すると、(この行を入力しなかった場合と同様に)クエリ結果に変更はありません。 代わりに、 'ads = 0'行を追加すると、ゼロの値(実際に存在する)がないフィールドのように空の結果が出力されます
あなたの望む通りにWHERE
声明の句を書いてください。 members.ads
を想定し
はあなたが示したようEXISTSを使用することができるはず...
SELECT m.email
FROM members m
WHERE m.ads <> 0
AND EXISTS (
SELECT 1
FROM posts p
WHERE p.email = m.email
)
ORDER BY m.ads DESC
整数データ型です。参加するとあなたはまた、もちろん、それを書くことができます。
またSELECT DISTINCT m.email
FROM members AS m
JOIN posts AS p ON p.email = m.email
WHERE (m.ads<>0)
ORDER BY ads DESC
、あなたは「DISTINCT」操作を押し下げ、サブクエリを使用することにしたかもしれません:
SELECT m.email
FROM members AS m
JOIN (SELECT DISTINCT p.email FROM posts AS p) AS q ON q.email = m.email
WHERE (m.ads<>0)
ORDER BY ads DESC
で存在できメンバーテーブルの個別のメールアドレスごとに1つの結果が表示されます。複数のメンバーが電子メールアドレスを共有できるようにする場合は、依然として外側のクエリにDISTINCTが必要な場合があります。
しかし、オープニングポイントを繰り返すには、EXISTS演算子を使用して示したように他の句を使用できるようにする必要があります。
「動作しません」と定義します。エラーメッセージが出ますか? – Phil
あなたの質問やデータが間違っていて、質問から 'EXISTS'を完全に削除することができます。あなたは 'ads <> 0'状態でちょっと試しましたか?最小限のテストケースに絞り込むことは、デバッグの重要な技術です。 –
'ads == 0' **のレコードがなく、' posts'のレコードが一致しているようです – Phil