php - 请问这条多表联查的SQL怎么写?
阿神
阿神 2017-05-16 13:07:35
0
5
815

我的问题如下图所述,数据库结构及数据在下面代码块,求大牛帮忙看看..

我希望得到的结果是:

表结构及数据如下

CREATE TABLE A(
id INT NOT NULL,
num INT NOT NULL
)CHARSET=utf8;

INSERT INTO A(id,num) VALUES(1,5),(2,7),(3,6);

CREATE TABLE B(
aid INT NOT NULL,
sid INT NOT NULL,
content VARCHAR(20) NOT NULL
)CHARSET=utf8;

INSERT INTO B(aid,sid,content) VALUES(3,1,'A'),(3,2,'B'),(3,3,'C');

CREATE TABLE C(
id INT NOT NULL,
time 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
(
SELECT distinct
    a.id,a.num,b.aid,b.sid,b.content,c.id as cid,c.time,c.libs
FROM
    a a
LEFT JOIN b b ON b.aid = a.id
LEFT JOIN c ON c.id = b.sid
WHERE a.id = 3
ORDER BY time DESC
) as TMP
GROUP BY cid ;

有没有大牛能提供一个更效率的写法呢?

阿神
阿神

闭关修行中......

全員に返信(5)
習慣沉默

リーリー

いいねを押す +0
Peter_Zhu

リーリー

上記のデータであれば、このSQLは満たされるはずです。 。 。ご満足いただけない場合は、気にしないでください...


これは私のクエリ結果です

いいねを押す +0
小葫芦

リーリー

いいねを押す +0
曾经蜡笔没有小新

あなたが望むものは質問に明確に記載されていません。 。 。

いいねを押す +0
phpcn_u1582

リーリー

効率に問題があります..

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!