2

私は2つのテーブルを持っています:

  • 人のリスト;
  • 無視したい人リスト。

人のリストを読むとき、リストに無視された人を見たくありません。

私の現在の解決策は、データベースにもう一度クエリを実行し (無視したい人を選択するため)、PHP で作成した配列からそれらを削除することです。動作していて問題ありません。

ただし、MySQLでそれを行いたいです。JOIN行が他のテーブルに存在する場合にのみ参加することがわかっています。別のものを探しています(行が存在する場合、エントリは表示されません)。

Google で検索しましたが、「キーワード」がないため、結果が得られませんでした。

ありがとう

4

3 に答える 3

7
SELECT * FROM Person
LEFT OUTER JOIN IgnoredPerson
ON Person.id = IgnoredPerson.id
WHERE IgnoredPerson.id IS null

説明:

ここに画像の説明を入力してください

where句を使用して右側から不要なレコードを除外します

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

于 2012-10-30T16:30:18.963 に答える
2

あなたのスキーマを知らなくても、私はこれらの線に沿って何かを提案します:

SELECT * FROM people WHERE id NOT IN (SELECT person_id FROM ignored_people)
于 2012-10-30T16:30:18.743 に答える
2

あなたはこのようなことを試すことができます

 SELECT * FROM people p WHERE NOT EXISTS (SELECT i.id FROM ignorePeople i where p.id = i.id )

これはMySqlのEXISTSに関するリンクです

于 2012-10-30T16:30:31.420 に答える