[解決済み] LEFT JOIN 最初の行のみ
2022-04-23 07:47:52
質問
左結合の最初の行だけを取得するというスレッドをたくさん読みましたが、なぜか私にはうまくいきません。
以下は私の構造です(もちろん簡略化しています)。
フィード
id | title | content
----------------------
1 | Feed 1 | ...
アーティスト
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2
フィード_アーティスト
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...
さて、記事を取得して、最初のArtistだけに参加したいのですが、次のようなものを考えてみました。
SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
SELECT feeds_artists.feed_id FROM feeds_artists
WHERE feeds_artists.feed_id = feeds.id
LIMIT 1
)
WHERE feeds.id = '13815'
は、feeds_artists の最初の行だけを取得したいのですが、すでにこれはうまくいきません。
を使用することはできません。
TOP
でグループ化することができません。
feeds_artists.artist_id
日付でソートする必要があるため(この方法でグループ化すると結果は出たが、結果は最新ではなかった)。
同様にOUTER APPLYで何かを試してみましたが、同様に成功しませんでした。 正直なところ、これらの行で何が起こっているのかよく想像できないのですが、おそらくこれがうまくいかない最大の理由でしょう。
解決策
SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
SELECT artist_id
FROM feeds_artists fa
WHERE fa.feed_id = f.id
LIMIT 1
)
WHERE f.id = '13815'
解決方法は?
Matt Dodgesの回答で、正しい道に進むことができました。この間、多くの人を助けてくれたすべての答えに感謝します。このように動作するようになりました。
SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
SELECT artist_id
FROM feeds_artists fa
WHERE fa.feed_id = f.id
LIMIT 1
)
WHERE f.id = '13815'
関連
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】ジョインとサブクエリの比較
-
[解決済み】2つのSELECT文の結果をJOINする。
最新
-
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はこのようなUpdateステートメントを書くべきではありません
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
Djangoマイグレーションエラー 外部キー制約を追加できない
-
[解決済み] どのトランザクションが「テーブルメタデータのロック待ち」状態を引き起こしているかを確認するにはどうすればよいですか?
-
[解決済み] MySQLのプロセスリストを見つけ、それらのプロセスを終了させる方法は?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] SQLでカラムに最大値を持つ行のみを選択する [重複]。
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?