[解決済み] MySQLのwhere節を使ったjoin
質問
結合したい2つのテーブルがあります。
私は、categories テーブルにあるすべてのカテゴリと、category_subscriptions テーブルにあるユーザーが購読しているすべてのカテゴリが欲しいのです。
基本的にこれが私のクエリです。
SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id
これは問題なく動作しますが、クエリの最後にwhere句を追加して、本質的にinner/equi joinにしたいのです。
SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id
WHERE user_category_subscriptions.user_id = 1
1つのクエリで、すべてのカテゴリと、特定のユーザが購読しているすべてのカテゴリを取得するにはどうすればよいですか?
category_id は、categories テーブルと user_category_subscriptions テーブルの両方のキーです。
感謝
解決方法は?
の中に入れる必要があります。
join
節ではなく
where
:
SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON
user_category_subscriptions.category_id = categories.category_id
and user_category_subscriptions.user_id =1
ほら、このように
inner join
の中に節を入れることです。
join
または
where
が相当します。ただし
outer join
というように、両者は大きく異なっています。
として
join
条件では、テーブルに結合する行セットを指定します。これは、以下を評価することを意味します。
user_id = 1
のサブセットを取得します。
user_category_subscriptions
を持つ
user_id
の
1
のすべての行に結合します。
categories
. これで
categories
のみであるのに対し
categories
には、この特定のユーザが購読している情報が含まれます。
user_category_subscriptions
カラムを使用します。もちろん、他のすべての
categories
が入力されます。
null
の中に
user_category_subscriptions
カラムを使用します。
逆に
where
節は結合を行い
では
は行セットを縮小します。つまり、これはすべての結合を行い、そして、以下のような行をすべて削除します。
user_id
とは等しくない。
1
. という非効率的な方法が残されています。
inner join
.
これが役立つといいのですが
関連
-
mysqlでインデックスに障害が発生する原因は何ですか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】ジョインとサブクエリの比較
-
[解決済み】Where句を使った左結合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL Innodb インデックスメカニズム詳細解説
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
MySql認証ベースのvsftpd仮想ユーザー
-
[解決済み】MySQL - オペランドは1つのカラムを含む必要があります。
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新