MySQL - INNER JOIN + WHERE句によるクエリ

SELECT `views`.* FROM `views` 
    INNER JOIN memberships ON memberships.second_id = views.user_id 
    WHERE (memberships.user_id = 1 OR views.user_id = 1)

私はこのMySQLのクエリを持っています - 私の問題は、 WHERE 節の第2部分は動作しません、 memberships.user_id = 1 既に OR views.user_id = 1 ではありません。

何故なの?どうしましたか?

1
みんな、 INNER JOINの代わりに LEFT を使ってみました。
追加された 著者 user984621,
おそらくmysql演算子はORの代わりにAND ...とにかくあなたの質問はちょっと混乱していて、特に "行だけがフェッチされます"
追加された 著者 B4NZ41,
説明がまだ明確でないため、説明を修正してください。おそらく、テーブル内のスキーマとサンプルデータの最小限の例と、得られたものと予想したものを生成する必要があります。問題を示すためには、ビューに数行(1-4)行、メンバーシップに少数(1-4)行しか必要ないでしょう。
追加された 著者 Jonathan Leffler,
ビューテーブルに、(結合されたとき)クエリに一致するレコードがありますか?
追加された 著者 ManseUK,
@ user984621次に、 memberships.second_id = views.user_id views.user_id = 1 のテーブルビュー
追加された 著者 ManseUK,

1 答え

これは、 memberships.user_id = 1 の条件が満たされていると、 memberships.user_id = views.user_id がtrueの場合、views.user_idはmemberships.second_idと等しく、second_idは1と等しくない可能性があります

1
追加された
INNER JOIN の代わりに LEFT JOIN を使用しようとしましたが、それはうまくいくように見えますが、
追加された 著者 user984621,
確かに、 1 の代わりに views.user_id を指定する必要があります。
追加された 著者 user984621,