[英]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.