目标
从blog_news中选择不同的ID
active = 1
标题不是空的
除非图片是徽标或至少一个视频,否则至少有一张图片
到目前为止的声明
select distinct n.id from blog_news n
left join blog_pics p ON n.id = p.blogid and active = '1' and trim(n.title) != ''
left join blog_vdos v ON n.id = v.blogid
where (p.islogo = '0' and p.id is not null) OR (v.id is not null)
order by `newsdate` desc, `createdate` desc
Run Code Online (Sandbox Code Playgroud)
问题
选择有图片的blog_news ID,除非它们是徽标[正确]
选择同时包含视频和图片的blog_news ID [正确]
不选择只有视频[blog]的blog_news ids
这个怎么样:
SELECT DISTINCT n.id
FROM blog_news n
WHERE n.active = '1'
AND trim(n.title) != ''
AND (EXISTS (SELECT 1
FROM blog_pics p
WHERE p.blogid = n.id
AND p.islogo = 0)
OR EXISTS (SELECT 1
FROM blog_vdos v
WHERE v.blogid = n.id)
)
ORDER BY n.newsdate desc, n.createdate desc
Run Code Online (Sandbox Code Playgroud)
如果您只对子行的存在(或不存在)感兴趣,那么使用EXISTS通常更清晰,更容易.