LEFT JOIN只有第二个表的where子句

时间:2018-01-10 11:45:16

标签: mysql sql join

我有两张桌子:

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

我想只使用一个查询,帖子中的所有条目以及post_meta中的条目仅使用post_meta =' x'。帖子中的一些条目在post_meta中没有对应,但我需要它们。我只用一个查询就可以做到这一点吗?

6 个答案:

答案 0 :(得分:1)

Select a.*, b.* 
From post a 
  left join post_meta b on (a.id = b.id and b.meta_key='x')

答案 1 :(得分:1)

select * 
from post 
  left join 
  post_meta 
where isNull(post_meta.meta_value) 
      or 
      post_meta.meta_value ="x"

我暂时没有做太多sql,但我知道这是可能的。我认为在你加入的桌子的任何值上查询isNull。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

试试这个..     从邮寄中选择*     LEVE JOIN post_meta on post.id = post_meta.post_id where post_meta.x =' x'

答案 4 :(得分:0)

这是我的解决方案。

test()

答案 5 :(得分:0)

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不存在,这应该有效。