私の問題は下の図に示されているとおりで、データベースの構造とデータは以下のコード ブロックにあります。
< /p>
取得したい結果は次のとおりです。
テーブル構造とデータは次のとおりです
CREATE TABLE A(
id INT が NULL ではありません。
数値 INT NOT NULL
)CHARSET=utf8;
INSERT INTO A(id,num) VALUES(1,5),(2,7),(3,6);
テーブル B の作成(
援助 INT NOT NULL、
sid INT NOT NULL、
コンテンツ VARCHAR(20) NOT NULL
)CHARSET=utf8;
INSERT INTO B(aid,sid,content) VALUES(3,1,'A'),(3,2,'B'),(3,3,'C');
テーブルCの作成(
id INT が NULL ではありません。
時間 INT NOT NULL、
libs VARCHAR(20) NOT NULL
)CHARSET=utf8;
INSERT INTO C(id,time,libs) VALUES(2,18,'wagaga'),(3,16,'aaaa'),(1,15,'cc'),(3,17,'dddd') ,(4,14,'eeee'),(3,10,'ffff'),(3,11,'bbbb');
これでニーズは満たせますが、実行効率が低すぎます...
select * from
(
個別の選択
a.id、a.num、b.aid、b.sid、b.content、c.id (cid、c.time、c.libs として)
から
ああ
LEFT JOIN b b ON b.aid = a.id
LEFT JOIN c ON c.id = b.sid
WHERE a.id = 3
時間順 DESC
)TMPとして
GROUP BY cid ;
より効率的な書き方を提供できる専門家はいますか?
天蓬老师2017-05-16 13:09:35
リーリー
上記のデータであれば、このSQLは満たされるはずです。 。 。ご満足いただけない場合は、気にしないでください...
これは私のクエリ結果です