[英]Optimize 2 mysql queries to one
用户有宠物 ,宠物可能有图片可以将一张图片设置为主图片(mainpic = 0或mainpic = 1)
我需要从pets表中获取所有pet数据,我还需要mainid = 1或第一张图片的图片ID,如果他在图片表中没有图片,则返回null。 即使根本没有图片,我也需要获取宠物数据。
目前,我使用2个查询来完成此操作:SELECT * FROM pets WHERE pets.userId ='$ userId'ORS BY pets.created ASC LIMIT 5 ...每个结果:SELECT ID FROM pictures WHERE petId ='$ petId'ORDER按主要类型DESC LIMIT 1
我需要在一个查询中进行优化。
谢谢,哈姆雷特
使用内部联接忽略不匹配的记录
select *
from pets inner join pictures
on pets.id = petId and mainpic=1
where userId=?
order by pets.created ASC limit 5
如果您只希望在图片相关字段中为空,但想要宠物信息(您的Q有点不清楚),请使用左联接
select *
from pets left join pictures
on pets.id = petId and mainpic=1
where userId=?
order by pets.created ASC limit 5
尝试这个:
SELECT * FROM pets
INNER JOIN pictures ON pictures.petid = pets.id AND pictures.mainpic = 1
WHERE pets.userid='$userid'
SELECT *
FROM pets p
LEFT OUTER JOIN (
SELECT *
FROM pictures pict
WHERE pict.mainpic = 1
) pict ON pict.petid = p.petid
WHERE p.userid = '$userid'
SELECT (
SELECT id
FROM pictures pi
WHERE pi.petid = pe.petid
ORDER BY
mainpic DESC
LIMIT 1
)
FROM pets pe
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.