My problem is as shown in the picture below. The database structure and data are in the code block below. Please help me.
< /p>
The result I hope to get is:
The table structure and data are as follows
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');
This can meet my needs, but the execution efficiency is too low...
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 ;
Is there any expert who can provide a more efficient way of writing?
If it is the above data, this sql should be satisfied. . . If you are not satisfied, just don’t care...
This is my query result
What you want is not clearly described in the question. . .
There is a problem with efficiency..