繁体   English   中英

带有where子句的LEFT JOIN仅用于第二个表

[英]LEFT JOIN with where clause only for second table

我有两个表:

1. posts (id, title, content, etc)
2. post_meta (id, post_id, meta_key, meta_value)

我只想查询一个,所有帖子的条目和post_meta的条目都只有post_meta ='x'。 帖子中的某些条目在post_meta中没有通讯员,但我需要它们。 我可以只执行一个查询吗?

Select a.*, b.* 
From post a 
  left join post_meta b on (a.id = b.id and b.meta_key='x')
select * 
from post 
  left join 
  post_meta 
where isNull(post_meta.meta_value) 
      or 
      post_meta.meta_value ="x"

我已经有一段时间没有做太多的sql了,但是我知道这是可能的。 我认为这是在查询要联接的表的任何值上的isNull。

select *
from posts p
   left outer join post_meta pm on p.id=pm.post_id and pm.meta_key='x'

试试这个..从post.id = post_meta.post_id上的LEFT JOIN post_meta中选择*,其中post_meta.x ='x'

这是我的解决方案。

SELECT * FROM post,post_meta WHERE post.id=post_meta.post_id , post_meta.id="x";
SELECT posts.*, post_meta.* 
FROM posts 
LEFT JOIN post_meta 
ON posts.id = post_meta.post_id WHERE post_meta.meta_value is null OR
post_meta.meta_value = 'x'

由于您希望发自发帖表的所有发帖,而发帖表中post_meta表中对应的meta_value是'x'或meta_value不存在,因此这应该可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM